如何在另一个查询集django对象中查找一组查询集对象(包含一个搜索对象)中的一个对象
例如,如何在订购产品中找到最常见的产品并推断其数量
我为这样的问题道歉,我仍然是菜鸟,我的大脑不能 如此批判性思考
订购模型
class Order(models.Model):
products_of_order = models.ManyToManyField("ProducInOrder", related_name='Some_Products')
class ProducInOrder(models.Model):
order = models.ForeignKey(Order, blank=True, null=True, default=None)
product = models.ForeignKey(Product, blank=True, default=None)
quantity = models.IntegerField(default=0)
产品型号
class Product(models.Model):
name_of_product = models.CharField(max_length=20)
我尝试这样做:
product = Product.objects.all()
some = Order.objects.filter(products_of_order__product__in=product).count()
但它只是返回包含产品的所有产品, 如何计算与产品清单相匹配的订单产品中的每种产品。
我有一个想法如何在一个查询集中制作它,但我想在一行中制作它)
some_dict = {}
for i in some:
for s in i.products_of_order.all():
if s.product.name_of_product in some_dict:
some_dict.s.product.name_of_product += 1
else:
some_dict.s.product.name_of_product = 1
答案 0 :(得分:0)
目前还不清楚你在问什么。但是使用defaultdict:
可以更自然地表达最后一段代码count = collections.defaultdict(int)
for order in some:
for product in order.products_of_order.all():
count[product.name] += 1