Я хочу отобразить список всех уникальных категорий. Я хочу, чтобы они были ссылками. которые открывают новое представление, отображающее все элементы, принадлежащие этой категории. я понятия не имею, как создавать эти ссылки в urlpatterns. У меня также есть несколько вопросов относительно того, как лучше всего поступить с этим. Первое, что я попробовал, - это включить в мою модель поле категории и отфильтровать уникальные поля в моем классе ListView. Во-вторых, я попытался создать новую модель, содержащую все категории.
мой 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
мой 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
Спасибо за помощь





В categorias_list.html создайте свои ссылки
{% for obj in object_list %}
<a href = "{% url 'cat' obj.id %}">{{ obj.categoria }}</a>
{% endfor %}
В urls.py создайте свои URL-адреса
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 %}
понял, это сделало трюк url(r'^displayCategory/(?P<pk>\d+)/$', views.CategoriaDetail.as_view(), name='cat'),
Привет, я реализовал решение, которое вы мне предоставили, и я получил
NoReverseMatch at /displayCategory/Reverse for 'cat' not found. 'cat' is not a valid view function or pattern name.