Django模型选择

Django模型选择,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_

对于这样的模型,我有一个选项元组,我想使用要在导航栏中显示的选项,这就是我目前拥有的:

型号.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')
视图.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中,是否有一种方法可以在中显示选项 将军


为什么不在上下文中发送选择并在模板中呈现它们呢?嗯,好的,我没想到,让我看看