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])
5つの結果が得られましたが、そのうちの3つは同じ主キーを持っています。review
それぞれではなく、それぞれの結果を取得しているようですproduct
。
products
これらをIDでグループ化し、添付されたカウントで注釈を付ける方法を誰かが知っていますreviews
か?