Django查询-按一对泛型关系字段的计数排序
我有一个模型Tic,它与我的应用程序中的其他模型具有通用外键关系Django查询-按一对泛型关系字段的计数排序,django,generics,sql-order-by,relation,Django,Generics,Sql Order By,Relation,我有一个模型Tic,它与我的应用程序中的其他模型具有通用外键关系 class Tic(models.Model): user = models.ForeignKey(User) content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey('content_
class Tic(models.Model):
user = models.ForeignKey(User)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
added = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = ('user', 'content_type', 'object_id')
我想查询此模型并完成以下操作:
- 过去一周限制为“抽搐”
- 按(内容类型、对象id)对的发生次数排序(最高优先)
- 能够跟踪返回的对象(例如,如果返回了“Movie”对象,则能够执行tic[0]。内容\u对象。电影\u标题)
d = date.today() - timedelta(days=14)
t = Tic.objects.filter(added__gt = d).values('content_type','object_id').annotate(num_tic = Count('id')).order_by('-num_tic')
知道如何得到一个类似的查询来返回对象吗
编辑
接下来,我通过使用原始查询实现了这一点:
sql = 'SELECT *, COUNT(*) AS count FROM tics_tic WHERE content_type_id = '+ str(movie_ct.id) +' GROUP BY content_type_id, object_id ORDER BY Count DESC'
……只需取出
。值
。当前“计数”仅接受1个字段。.values('content\u type','object\u id')允许计数计算这两个字段的唯一对。除非我真的误解了您要做的事情,否则为什么不使用两个order BY?首先按内容类型,然后按id?