1
我在Django用range
运行filter
查询。我认为filter
总是返回一个按主键组成的查询集,但似乎没有。简单的Django过滤器查询:按主键组?
这是我的模型:
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])
我得到五个结果,但他们三个人都具有相同的主键。它看起来像我得到每个review
的结果,而不是每个product
。
有谁知道我怎么可以用ID将这些products
分组,并用附加的reviews
的计数进行标注?
当你说“群”,你的意思是“排序”? “Group by”是一个完全不同的概念。 – 2012-07-23 16:09:43
我只是想要每个产品的结果,而不是每个评论。也许我应该在客户端做到这一点,但我想知道是否可以用Django。 – flossfan 2012-07-23 16:10:25
试过'.distinct()'? – 2012-07-23 16:17:15