我有一个视图来呈现所有唯一类别的列表。我希望他们成为链接。打开一个新视图,显示属于该类别的所有项目。我不知道如何在urlpatterns上创建这些链接。 关于什么是最好的行动方案,我也有一些问题。我尝试过的第一件事就是让我的模型已经包含了类别字段并过滤了ListView类中的唯一字段。我尝试的第二件事是创建一个包含所有类别的新模型。
my models.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
my views.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
感谢您的帮助
答案 0 :(得分: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 %}