如何使用Django筛选属于其组的obj

2024-07-07 05:37:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这两个模型产品和产品类别模型,如何根据它们的类别对产品进行分组

产品数据

产品={“苹果”、“菠萝”、“猪肉”、“鸡肉”、“豆类”、“番茄”}

类别数据

类别={“水果”、“肉类”、“蔬菜”}

预期结果

水果={“苹果”、“菠萝”}

肉={“猪肉”、“鸡肉”}

蔬菜={“豆”,“番茄”}

这是我的观点

def Homepage(request):
    category = ProductCategory.objects.all()
    products = Product.objects.filter(category__in=category.values_list('id'))
    return render(request, 'customAdmin/Homepage.html', {"products":products, "category":category})

这是我的模特

class ProductCategory(models.Model):
    category = models.CharField(max_length=500)
    def __str__(self):
        suser = '{0.category}'
        return suser.format(self)

class Product(models.Model):
    product = models.CharField(max_length=500)
    category = models.ForeignKey(ProductCategory,
                                 on_delete=models.SET_NULL, null=True, blank=True,
                                 verbose_name="Category")
    def __str__(self):
        suser = '{0.product}'
        return suser.format(self)

这是我得到的结果

<QuerySet [<Product: Apple>, <Product: Chicken>, <Product: cabbage>, <Product: ampalaya>, <Product: okra>]>

Tags: 数据模型self苹果return产品modelsdef
2条回答

首先创建一个类别。例如:

c = ProductCategory(category='Fruits')
c.save()

然后创建产品并将其链接到类别:

p = Product(product='Apple', category=c)
p.save()

然后你可以这样做,就像Vinayak Mikkal的回答:

fruits = Product.objects.filter(category=ProductCategory.objects.get(category='Fruits')

对每个类别重复以下代码

fruits = Product.objects.filter(category=ProductCategory.objects.get(category="Fruits"))

相关问题 更多 >