Django模型过滤器对象有一个字段作为self对象(请阅读问题主体)



我有两个模型Quiz和ABCDABCD使用一对一字段连接到测试测验模型将用于存储测验,ABCD是用于为用户存储结果的模型一个测验将连接多个ABCD(一个测验将有多个结果)在Quiz模型中,我想要一个方法,它将返回该测验的所有结果(ABCD对象将该测验作为其测验字段)我应该写什么来过滤ABCD与该测验

class Quiz(models.Model):
name=models.CharField(max_length=250)
def show_results(self):
return ABCD.objects.filter(quiz=what to write here)
class ABCD(models.Model):
quiz=models.OneToOneField(Quiz,on_delete=models.CASCADE)
points=models.IntegerField()

您不需要使用模型过滤器来获取连接到Quiz的abcd, Django会自动创建一个related_name(如果您喜欢不同的名称,您可以在字段中指定一个)。您可以通过以下方式访问它:

def show_results(self):
return self.abcd_set.all()

你真的不需要一个'show_result'方法,但这取决于你。

在一个相关的注意事项上,你的模型关系是一对一的,当我相信你想要使用多对一或models.ForeignKey字段。一对一的访问器就是quiz.abcd因为只有一个!

如果一个测验将有多重ABCD,您应该将OneToOneField更改为ForeignKey:

class ABCD(models.Model):
quiz=models.ForeignKey(Quiz,on_delete=models.CASCADE)
points=models.IntegerField()

then with instance of Quiz model:

quiz = Quiz.objects.get(pk=1) // for example

queryset ABCD所有对象,这个测验foreignkey:

quiz.abcd_set.all()

最新更新