gpt4 book ai didi

python - Django:对象和模型集

转载 作者:太空宇宙 更新时间:2023-11-04 10:05:58 26 4
gpt4 key购买 nike

我正在学习django 1.10官方教程第二部分

class  Question(models.Model):
# ......

class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
#.......

最近我看到了以下命令:-

q = Question.objects.get(id=1)
q.choice_set.all()

我的问题:-

Question 实例如何包含 choice_set,我知道它用于访问相关对象。

为什么这是无效的

c = Choice.objects.get(id=1)
c.question_set.all()

最佳答案

问题模型没有对选择模型的显式引用;但是,Django 会自动添加一个反向引用,默认情况下称为 choice_set。您可以通过模型上的 related_name 关键字覆盖它,例如:

class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name='choices')

现在您可以引用所有选项来解决这样的问题:

q = Question.objects.get(pk=1)
q.choices.all()

要回答你的第二个问题,你不能使用 choice 对象中的引用 question_set.all() 的原因是因为对于每个选择,只有一个问题加上存在对问题对象的明确引用。换句话说,Choice 模型已经有一个名为 Question 的字段,它指向 Question 模型。

希望对您有所帮助。

关于python - Django:对象和模型集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41000308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com