Я борюсь с одной проблемой в течение некоторого времени.Я хотел бы пролистать сайт следующим образом.Домашняя страница со ссылками на категории -> Когда я иду в категории, я бы перечислил все предложения с этими основными категориями.Но также для данной категории я хотел бы иметь возможность фильтровать эти категории по подкатегориям.Сейчас я борюсь с первым шагом.Вот мой код
class HomeView(ListView):
context_object_name = 'category'
queryset = Category.objects.all()
template_name = 'accounts/home.html'
class GetOffersByCategory(ListView):
model = Offer
template_name = 'offer/offer_list.html'
context_object_name="category"
def get_queryset(self):
self.category = get_object_or_404(Category, name=self.kwargs['category'])
return Offer.objects.filter(category=self.category)
И мои URL
path('', views.HomeView.as_view() ,name='home'),
path('offers/<category>',views.GetOffersByCategory.as_view(),name='offers'),
И мои модели.
class Offer(models.Model):
title = models.CharField(max_length=100)
content = models.TextField(blank=False)
price = models.IntegerField()
contact = models.IntegerField()
photo = models.ImageField(upload_to='offer_images/',blank=True)
created_at = models.DateTimeField(auto_now_add=True)
category = models.ForeignKey('Category', null=True, blank=True,on_delete=models.CASCADE)
slug = models.SlugField(max_length=200, db_index=True,default="None")
def get_absolute_url(self):
return reverse('offers:offer_detail',args=[self.title, self.slug])
class Meta:
ordering = ('title',)
index_together = (('id', 'slug'),)
def __str__(self):
return self.title
class Category(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField()
parent = models.ForeignKey('self',blank=True, null=True ,related_name='children',on_delete=models.CASCADE)
class Meta:
unique_together = ('slug', 'parent',)
verbose_name_plural = "categories"
def __str__(self):
full_path = [self.name]
k = self.parent
while k is not None:
full_path.append(k.name)
k = k.parent
return ' -> '.join(full_path[::-1])
def get_absolute_url(self):
return "/offers/%s/" % self.slug
Основная проблема для меня - работать с URL в шаблонах.Потому что я понимаю такие более простые шаблоны, как {url 'name'}, но не знаю точно, как создать ссылку, например {% 'category:' MyCategoryFromDB '%}.Я не хочу проходить через цикл for, потому что я знаю свои категории.Я надеюсь, что объяснение моей проблемы является правильным и будет решено с вашей помощью:)