【发布时间】:2020-03-26 17:03:48
【问题描述】:
我的模型中有以下两个类:
class Answer(models.Model):
answer = models.CharField(max_length=300)
question = models.ForeignKey('Question', on_delete=models.CASCADE)
def __str__(self):
return "{0}, view: {1}".format(self.answer, self.answer_number)
class Vote(models.Model):
answer = models.OneToOneField(Answer, related_name="votes", on_delete=models.CASCADE)
users = models.ManyToManyField(User)
def __str__(self):
return str(self.answer.answer)[:30]
在shell中我取第一个答案:
>>> Answer.objects.all()[0]
<Answer: choix 1 , view: 0>
我想获得 Vote 对象:
>>> Answer.objects.all()[0].votes
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\Hippolyte\AppData\Roaming\Python\Python38\site-packages\django\db\models\fields\related_descriptors.py", line 420, in __get__
raise self.RelatedObjectDoesNotExist(
questions.models.Answer.votes.RelatedObjectDoesNotExist: Answer has no votes.
但是发生了错误。
我不明白为什么 related_name 无法识别。你能帮帮我吗?
【问题讨论】:
-
您在这里使用了
OneToOneField?这意味着每个Vote指向一个不同的 答案?那么每个Answer最多有一个Vote,因此some_answer.votes将立即查询Vote对象,如果它不存在,则会引发DoesNotExists错误。
标签: python django one-to-one