我filter
在 Django 中使用range
. 我以为filter
总是返回一个按主键分组的查询集,但似乎不是。
这些是我的模型:
class MCode(models.Model):
code = models.CharField(max_length=16)
class Product(models.Model):
id = models.CharField(max_length=40, primary_key=True, db_index=True)
mcode = models.ForeignKey(MCode, null=True, blank=True, db_index=True)
class Review(models.Model):
review_id = models.CharField(max_length=32, primary_key=True, db_index=True)
product = models.ForeignKey(Product, db_index=True)
rating = models.IntegerField()
time = models.DateTimeField(db_index=True)
这是我的代码:
mcode = 'M83'
base = Product.objects
tcode_obj = MCode.objects.filter(code=mcode.upper())
return base.filter(tcode=tcode_obj,
review__time__range=[date_from, date_to])
我得到五个结果,但其中三个具有相同的主键。看起来我得到了 each 的结果review
,而不是 each product
。
有谁知道我如何products
按 ID 对这些进行分组,并用附件的数量进行注释reviews
?