0

我有一个模型 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')

我想查询这个模型并完成以下操作:

  • 过去一周仅限于“抽动”
  • 按 (content_type, object_id) 对的出现次数排序(最高优先)
  • 能够跟踪返回的对象(例如,如果返回“电影”对象,则能够执行 tic[0].content_object.movi​​e_title)

到目前为止,我有以下查询可以让我得到正确的 Tics,但我只能让它作为值列表正常工作。

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'
4

1 回答 1

0

…………拿出来.values……

于 2013-04-16T18:19:20.500 回答