在我的Django应用中,用户发布保存为photo
个对象的照片。然后,观看者可以在每张照片下发布评论,保存为在photocomment
个对象上具有外键的photo
个对象。
我正在尝试编写一个ORM查询请求每个照片对象的位置,我附加了它所获得的唯一注释的数量。唯一意味着由唯一user_id
发表评论。即如果同一个人/女孩评论了1000次,它仍然是一个独特的评论。
我如何做到这一点?
到目前为止,我已经提出以下建议:
relevant_photos = Photo.objects.filter(id=set_of_ids)
PhotoComment.objects.filter(which_photo_id__in=relevant_photos).annotate(unique_comment_count=Count("submitted_by")).distinct("submitted_by")
我觉得这不行,因为我不是真的在这里评估distinct
评论者。这样做的正确方法是什么?试图绕过它。
答案 0 :(得分:1)
模型结构会有所帮助,但这可能有效:
relevant_photos = Photo.objects.filter(id=set_of_ids)
PhotoComment.objects.filter(which_photo_id__in=relevant_photos).annotate(unique_comment_count=Count("submitted_by", distinct=True))
评论模型是这样的:
class Comment(models.Model):
...
submitted_by = models.ForeignKey(User)
...
答案 1 :(得分:1)