我有桌子冷标记。
class Mark(models.Model):
media = models.ForeignKey('media.Media')
mark = models.PositiveIntegerField()
user = models.ForeignKey(User)
class Meta:
unique_together = ('media_object','user')
如何获得至少有一票的媒体实例(或只计算媒体)的查询集?
我可以使用extra
吗?
更新: 换句话说:我正在查看所有表格并统计所有独特的媒体。如果我第二次发现它,我不算数。 换句话说:我需要统计独特的媒体领域。
答案 0 :(得分:1)
我假设“Mark”模型是用户投票的方式。要获取所有媒体模型的标记计数,您需要aggregation:
from django.db.models import Count
media_with_vote_count = Media.objects.annotate(vote_count=Count('mark_set'))
然后,您可以使用引用该注释的filter()
:
voted_media = media_with_vote_count.filter(vote_count__gt=0)
还有其他有用的聚合。例如,您可以计算每种媒体的平均分数:
from django.db.models import Avg
media_with_markavg = Media.objects.annotate(average_mark=Avg('mark_set__mark'))
答案 1 :(得分:0)
mk = Mark.objects.all()
mk.media.count()
你可以使用计数功能,但不确定你的问题是你想做什么或什么是投票。
编辑:
One row of media
if( mk.media.count() > 0):
......