Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django查询-按一对泛型关系字段的计数排序_Django_Generics_Sql Order By_Relation - Fatal编程技术网

Django查询-按一对泛型关系字段的计数排序

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_

我有一个模型Tic,它与我的应用程序中的其他模型具有通用外键关系

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标题)
到目前为止,我有下面的查询,它为我提供了正确的tic,但我只能让它作为一个值列表正常工作

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?