我有几个类别,我想按以下格式列出每个类别的产品(类别是产品的FK):
第1类
一堆产品
...
类别N
一堆产品
我尝试了很多方法,但到目前为止我只获得了类别,但没有在HTML中显示的产品。
models.py
class Category(models.Model):
title = models.CharField(max_length=225)
slug = models.SlugField(unique=True, blank=True, null=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('category_detail', kwargs={'slug': self.slug})
@property
def get_products(self):
return Products.objects.filter(category=self.title)
class Products(models.Model):
title = models.CharField(max_length=225)
image = models.ImageField(upload_to=upload_image_path, null=True, blank=True)
blank=True, on_delete=models.CASCADE)
categories = models.ForeignKey(Category, related_name='Category', blank=True, on_delete=models.CASCADE) #this
gender = models.CharField(max_length=20, choices=GENDER_CHOICES, default="male")
objects = ProductManager()
def get_absolute_url(self):
return reverse('product_detail', args=(self.id,))
def __str__(self):
return self.title
views.py
def categories_m(request):
query_Set = models.Category.objects.all()
page = request.GET.get('page', 1)
paginator = Paginator(query_Set, 20)
try:
cat = paginator.page(page)
except PageNotAnInteger:
cat = paginator.page(1)
except EmptyPage:
cat = paginator.page(paginator.num_pages)
return render(request, 'products/categories.html', {'categories': cat})
HTML
{% extends 'base.html' %}
{% block content %}
{% for category in categories %}
<h1>{{ category }}</h1>
{% for product in categories.get_products %}
<p>{{ product }}</p>
{% endfor %}
{% endfor %}
{% endblock %}
答案 0 :(得分:3)
模板中应该是category
而不是categories
。并在您的模型中按类别标题过滤产品。
@property
def get_products(self):
return Products.objects.filter(categories__title=self.title)
{% extends 'base.html' %}
{% block content %}
{% for category in categories %}
<h1> {{category}} </h1>
{% for product in category.get_products %}
<p> {{product}} </p>
{% endfor %}
{% endfor %}
{% endblock %}
答案 1 :(得分:1)
您可以从字段中删除=IF(AND(COUNTIF(B:B,B2)=3,SUMPRODUCT(--(COUNTIFS(B:B,B2,D:D,{222,111,777,555})=1))=3),"Check","")
属性
related_name
然后在您的模板中,您可以使用class Products(models.Model):
categories = models.ForeignKey(Category, blank=True, on_delete=models.CASCADE)
category.products_set.all