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