Django模型选择
对于这样的模型,我有一个选项元组,我想使用要在导航栏中显示的选项,这就是我目前拥有的: 型号.pyDjango模型选择,django,django-models,django-templates,Django,Django Models,Django Templates,对于这样的模型,我有一个选项元组,我想使用要在导航栏中显示的选项,这就是我目前拥有的: 型号.py OPCIONES_EVENTO = ( ('A', 'Aniversario'), ('C', 'Cumpleaños'), ('P', 'Padre'), ('M', 'Madre'), ('B', 'Bautizo') ) class Productos(models.Model): nombre = models.CharField(max_
OPCIONES_EVENTO = (
('A', 'Aniversario'),
('C', 'Cumpleaños'),
('P', 'Padre'),
('M', 'Madre'),
('B', 'Bautizo')
)
class Productos(models.Model):
nombre = models.CharField(max_length=200, null=True)
precio = models.FloatField()
precio_descuento = models.FloatField(blank=True, null=True)
categoria = models.CharField(choices=OPCIONES_CATEGORIA, max_length=1)
etiqueta = models.CharField(choices=OPCIONES_ETIQUETA, max_length=1)
tipo = models.CharField(choices=OPCIONES_TIPO,
max_length=1, blank=True, null=True)
evento = models.CharField(choices=OPCIONES_EVENTO,
max_length=1, blank=True, null=True)
imagen = models.ImageField()
slug = models.SlugField()
descripcion = models.TextField()
sku = models.CharField(max_length=20, blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name_plural = "Productos"
def __str__(self):
return self.nombre
def get_absolute_url(self):
return reverse('detalle-producto', kwargs={'slug': self.slug})
def get_agregar_al_carrito_url(self):
return reverse('agregar-al-carrito', kwargs={'slug': self.slug})
def get_quitar_del_carrito_url(self):
return reverse('quitar-del-carrito', kwargs={'slug': self.slug})
def get_filtro_evento(self):
return reverse('filtro-evento', kwargs={'evento': self.evento})
class FiltroEvento(ListView):
template_name = 'filtro-evento.html'
model = Productos
def get_queryset(self):
if self.kwargs['evento'] == 'B':
evento = 'B'
return Productos.objects.filter(evento=evento)
elif self.kwargs['evento'] == 'C':
evento = 'C'
return Productos.objects.filter(evento=evento)
path('productos/<evento>', views.FiltroEvento.as_view(), name='filtro-evento')
视图.py
OPCIONES_EVENTO = (
('A', 'Aniversario'),
('C', 'Cumpleaños'),
('P', 'Padre'),
('M', 'Madre'),
('B', 'Bautizo')
)
class Productos(models.Model):
nombre = models.CharField(max_length=200, null=True)
precio = models.FloatField()
precio_descuento = models.FloatField(blank=True, null=True)
categoria = models.CharField(choices=OPCIONES_CATEGORIA, max_length=1)
etiqueta = models.CharField(choices=OPCIONES_ETIQUETA, max_length=1)
tipo = models.CharField(choices=OPCIONES_TIPO,
max_length=1, blank=True, null=True)
evento = models.CharField(choices=OPCIONES_EVENTO,
max_length=1, blank=True, null=True)
imagen = models.ImageField()
slug = models.SlugField()
descripcion = models.TextField()
sku = models.CharField(max_length=20, blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name_plural = "Productos"
def __str__(self):
return self.nombre
def get_absolute_url(self):
return reverse('detalle-producto', kwargs={'slug': self.slug})
def get_agregar_al_carrito_url(self):
return reverse('agregar-al-carrito', kwargs={'slug': self.slug})
def get_quitar_del_carrito_url(self):
return reverse('quitar-del-carrito', kwargs={'slug': self.slug})
def get_filtro_evento(self):
return reverse('filtro-evento', kwargs={'evento': self.evento})
class FiltroEvento(ListView):
template_name = 'filtro-evento.html'
model = Productos
def get_queryset(self):
if self.kwargs['evento'] == 'B':
evento = 'B'
return Productos.objects.filter(evento=evento)
elif self.kwargs['evento'] == 'C':
evento = 'C'
return Productos.objects.filter(evento=evento)
path('productos/<evento>', views.FiltroEvento.as_view(), name='filtro-evento')
url.py
OPCIONES_EVENTO = (
('A', 'Aniversario'),
('C', 'Cumpleaños'),
('P', 'Padre'),
('M', 'Madre'),
('B', 'Bautizo')
)
class Productos(models.Model):
nombre = models.CharField(max_length=200, null=True)
precio = models.FloatField()
precio_descuento = models.FloatField(blank=True, null=True)
categoria = models.CharField(choices=OPCIONES_CATEGORIA, max_length=1)
etiqueta = models.CharField(choices=OPCIONES_ETIQUETA, max_length=1)
tipo = models.CharField(choices=OPCIONES_TIPO,
max_length=1, blank=True, null=True)
evento = models.CharField(choices=OPCIONES_EVENTO,
max_length=1, blank=True, null=True)
imagen = models.ImageField()
slug = models.SlugField()
descripcion = models.TextField()
sku = models.CharField(max_length=20, blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name_plural = "Productos"
def __str__(self):
return self.nombre
def get_absolute_url(self):
return reverse('detalle-producto', kwargs={'slug': self.slug})
def get_agregar_al_carrito_url(self):
return reverse('agregar-al-carrito', kwargs={'slug': self.slug})
def get_quitar_del_carrito_url(self):
return reverse('quitar-del-carrito', kwargs={'slug': self.slug})
def get_filtro_evento(self):
return reverse('filtro-evento', kwargs={'evento': self.evento})
class FiltroEvento(ListView):
template_name = 'filtro-evento.html'
model = Productos
def get_queryset(self):
if self.kwargs['evento'] == 'B':
evento = 'B'
return Productos.objects.filter(evento=evento)
elif self.kwargs['evento'] == 'C':
evento = 'C'
return Productos.objects.filter(evento=evento)
path('productos/<evento>', views.FiltroEvento.as_view(), name='filtro-evento')
path('productos/',views.filteroevento.as_view(),name='filtro-evento')
这是html模板代码的一部分:
-
{producto在对象_列表%}中的百分比为%
{%if producto.get\u evento\u display%}
-
{%endif%}
{%endfor%}
显然,这是在返回已经保存的选项
在“Productos”中的DB中,是否有一种方法可以在中显示选项
将军
为什么不在上下文中发送选择并在模板中呈现它们呢?嗯,好的,我没想到,让我看看