我的目标是从我创建的模型中获得具有特定类别的所有项目。例如,如果我应该获得一个具有ID的类别,我希望获得该类别中的所有产品。
下面是我的模型class Product(models.Model):
name = models.CharField(max_length=200)
category = models.ForeignKey('Category', null=True, on_delete=models.SET_NULL)
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
def __str__(self):
return self.name
class Category(models.Model):
#product = models.ForeignKey('Product', null=True, on_delete=models.SET_NULL)
name = models.CharField(max_length=200, blank=True, null=True)
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
def __str__(self):
return self.name
下面是我的观点
def getCategory(request, pk):
category = Category.objects.get(id=pk)
# product = Product.objects.all()
products = Product.category_set.all()
# Product.category_set.all()
context = {'category': category, 'products':products}
return render(request, '*.html', context)
我尝试使用Product.category_set.all(),我试图翻转它,获得与我获得ID的类别相关的产品,但我不知道如何做到这一点。
我在下面的模板中使用了这个循环,它工作了,但是我想知道是否有更好的方法来做到这一点。
模板
{产品中产品%}
{%如果product.category.id == category。id %}
View
def getCategory(request, pk):
category = Category.objects.get(id=pk)
products = Product.objects.all()
context = {'category': category, 'products':products}
return render(request, 'products/shop.html', context)
您可以使用与主要模型相关联的次要模型(Product)的字段(category)来使用主要模型(category)的标识符进行选择。为此,指定该字段,并通过双下划线指定主模型的所需字段。
Product.objects.filter(category__id=pk)