Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类别作为可点击按钮Django_Django_Django Models_Django Forms_Django Templates_Django Views - Fatal编程技术网

类别作为可点击按钮Django

类别作为可点击按钮Django,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我有一个视图来呈现所有独特类别的列表。我希望它们是链接。打开一个新视图,显示属于该类别的所有项目。我不知道如何在URL模式上创建这些链接。 我也有一些问题,关于这方面的最佳行动方案是什么。我尝试的第一件事是让我的模型已经在我的ListView类中包含category字段和filter unique字段。我尝试的第二件事是创建一个包含所有类别的新模型 我的模特 class Items(models.Model): nombre = models.CharField(max_length=2

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

我的模特

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
我的观点

# 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

感谢
categorias\u list.html

中的帮助创建链接

   {% for obj in object_list %}
      <a href="{% url 'cat' obj.id %}">{{ obj.categoria }}</a>
   {% endfor %}
views.py
中为类别创建详细视图

class CategoriaDetail(DetailView):
    model = Categorias
categorias\u detail.html
中显示项目

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

您好,我实现了您提供给我的解决方案,我在/displayCategory/
中得到了“未找到cat”的反向信息“cat”不是有效的视图函数或模式名称。
知道了这是怎么回事
url(r'^displayCategory/(?P\d+)/$),views.categateDetail.as_view(),name='cat'),
{% for item in obj.iterms_set.all %}
   {{ item.descripcion }}
{% endfor %}