对于每个问题,都有很多答案。我有一个表格投票,其中包含所有问题和答案的upvote/downvotes。我想执行一个查询是这样的:从投票在Django中执行WHERE'field'IN(list)查询?
选择*其中username = “一些用户名” AND(QID = “问题” OR(AID IN(选择答案AID WHERE QID = “问题”) ))
class Question(models.Model):
QID = models.CharField(default="",max_length=5, primary_key=True)
title = models.CharField(max_length=30, default="")
description = models.CharField(max_length=1055, default="")
date = models.DateTimeField(default=datetime.now, blank=True)
username = models.CharField(max_length=30, default="")
votes = models.IntegerField(default=0)
approved = models.BooleanField(default=False)
def __str__(self):
return self.title
class Answer(models.Model):
AID = models.CharField(max_length=5, default="", primary_key=True)
QID = models.ForeignKey(Question,on_delete=None)
description = models.CharField(max_length=1055, default="")
date = models.DateTimeField(default=datetime.now, blank=True)
username = models.CharField(max_length=30, default="")
votes = models.IntegerField(default=0)
approved = models.BooleanField(default=False)
def __str__(self):
return self.AID
class Vote(models.Model):
username = models.ForeignKey(User,on_delete=None)
QID = models.ForeignKey(Question,on_delete=None, null=True, blank=True)
AID = models.ForeignKey(Answer,on_delete=None, null=True, blank=True)
vote = models.BooleanField(default=True)
def __str__(self):
if self.QID is not None:
return self.QID.QID+'_'+self.username.username+'_'+str(self.vote)
else:
return self.AID.AID+'_'+self.username.username+'_'+str(self.vote)
PS请注意,QID和AID是外键。所以他们只会采用Question/Answer Model的实例。
这部分的意义是什么,'.values_list('AID',flat = True)' –
values_list()返回查询集中对象的字段值列表。 – zaidfazil