【问题标题】:Categories As clickable buttons Django分类作为可点击按钮 Django
【发布时间】:2018-09-26 15:20:04
【问题描述】:

我有一个视图来呈现所有独特类别的列表。我希望它们成为链接。打开一个新视图,显示属于该类别的所有项目。我不知道如何在 urlpatterns 上创建这些链接。 我也有一些关于什么是最好的行动方案的问题。我尝试的第一件事是让我的模型已经包含类别字段并在我的 ListView 类上过滤唯一字段。我尝试的第二件事是创建一个包含所有类别的新模型。

我的模型.py

class Items(models.Model):
    nombre = models.CharField(max_length=250)
    descripcion = models.CharField(max_length=250)
    codigo_proveedor = models.CharField(max_length=250)
    # categoria = models.CharField(max_length=250)
    categoria = models.ForeignKey('Categorias', on_delete=models.CASCADE) 
    c_minima = models.IntegerField()
    c_actual = models.IntegerField()
    proveedor = models.ForeignKey('Proveedores', on_delete=models.CASCADE)
    active = models.BooleanField()

    def __str__(self):
        return self.nombre + '   -----   ' + str(self.categoria) + '   -----    ' + str(self.c_actual)

class Categorias(models.Model):
    categoria = models.CharField(max_length=250, unique=True)
    # slug = models.SlugField(max_length=250, unique=True)
    active =  models.BooleanField()

    #
    # def get_absolute_or_url(self):
    #   return '',(self.slug, )

    def __str__(self):
        return self.categoria


class Proveedores(models.Model):
    nombre = models.CharField(max_length=250)
    telefono = models.CharField(max_length=250)
    direccion1 = models.CharField(max_length=250)
    direccion2 = models.CharField(max_length=250, null=True)
    active =  models.BooleanField()

    def __str__(self):
       return self.nombre

我的意见.py

# CREA LOS BOTONES DE CLASIFICACIONES
# class ItemListView(ListView):
#     model= Items
#
#     def get_context_data(self,**kwargs):
#         context = super(ItemListView, self).get_context_data(**kwargs)
#         context['categoria'] = Items.objects.all().order_by('categoria').values('categoria').distinct()
#         return context


class ItemListView(ListView):
    model = Categorias

    def get_context_data(self, **kwargs):
        context = super(ItemListView, self).get_context_data(**kwargs)
        context['categoria'] = Categorias.objects.all().order_by('categoria')
        return context

感谢您的帮助

【问题讨论】:

    标签: django django-models django-forms django-templates django-views


    【解决方案1】:

    categorias_list.html 创建您的链接

       {% for obj in object_list %}
          <a href="{% url 'cat' obj.id %}">{{ obj.categoria }}</a>
       {% endfor %}
    

    urls.py 创建您的网址

     url(r'^categoria/(?P<pk>[0..9]+)/$', views.CategoriaDetail.as_view(), name='cat')
    

    views.py 中为类别创建详细视图

    class CategoriaDetail(DetailView):
        model = Categorias
    

    categorias_detail.html 中显示项目

    {% for item in obj.iterms_set.all %}
       {{ item.descripcion }}
    {% endfor %}
    

    【讨论】:

    • 您好,我实施了您提供给我的解决方案,我得到了NoReverseMatch at /displayCategory/Reverse for 'cat' not found. 'cat' is not a valid view function or pattern name.
    • 知道了,这成功了url(r'^displayCategory/(?P&lt;pk&gt;\d+)/$', views.CategoriaDetail.as_view(), name='cat'),
    猜你喜欢
    • 2011-02-12
    • 2012-11-23
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多