将多个值添加到Django外键

时间:2018-05-15 08:55:42

标签: python django django-models foreign-keys django-admin

我有以下模型结构:

class Answer(models.Model):
    id = models.IntegerField(primary_key=True)
    answer_text = models.CharField(max_length=150)

    def __str__(self):
        return self.answer_text

class Question(models.Model):
    question_text = models.CharField(max_length=150)
    choices = models.ForeignKey(Answer, on_delete=models.CASCADE,
                                related_name='choices')
    answer = models.OneToOneField(Answer, on_delete=models.CASCADE)

    def __str__(self):
        return self.question_text

我在管理员处注册了这两个模型。但是当我尝试在管理员的问题中添加多个选项时,它会列出任何其他答案。

enter image description here 请参阅附带的屏幕截图我无法为问题添加多个选项。当我单击绿色+按钮时,它不会列出所有可能的答案。

2 个答案:

答案 0 :(得分:2)

你的外键是错误的方式。该字段定义的模型是"许多"一对多关系的一面。

对于有多个答案的问题,FK应该依赖于指向问题的答案。

然后您可以使用" inlines"管理员的功能是在与问题相同的页面上定义多个答案。

答案 1 :(得分:0)

您可以在这种情况下使用ManyToManyField。这允许您同时将多个选项绑定到不同的问题:

choices = models.ManyToManyField(Answer, related_name='choices')