我有一个表有很多记录,我正试图创建一个复杂的查询,并希望在这里获得一些帮助。Django中的子查询存在的复杂查询
models.py
class Vote(models.Model):
is_annonymous = models.BooleanField(default=True)
vote = models.IntegerField()
created_by = models.ForeignKey(User, null=True, blank=True)
created_at = models.DateTimeField(null=True, blank=True)
ip_address = models.IPAddressField(null=True, blank=True)
#content type
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
查询
all_votes = Vote.objects.filter(
~Q(created_by = None),
)
想从投票返回记录,其中CREATED_BY不是null,CREATED_BY了他的第一票。意思是,如果用户进行了第一次投票,我只想返回投票记录。
我不知道如何做这样的事情,通常情况下,在SQL,我会做一个子查询和统计用户投票,如果他们是平等的一个然后返回记录。
任何想法我会怎么做,与Django模型?
这个问题是类似的。它可能会帮助你:http://stackoverflow.com/questions/327807/django-equivalent-for-count-and-group-by –
这篇文章是关于从一个查询集分组结果。在我的情况下,我想过滤查询集只返回第一个条目,在正常的SQL可以完成子查询计数。但是,即使我在这里使用子查询计数,我也无法将子查询中的用户争论作为过滤器来传递。 –