Django-models.ForeignKey

问题描述 投票:1回答:1

感谢您对此进行检查。

我的疑惑:

我在Django中定义了以下模型:

class School(models.Model):
    name = models.CharField(max_length=256)
    principal = models.CharField(max_length=256)
    location = models.CharField(max_length=256)

    def __str__(self):
        return self.name

class Student(models.Model):
    name = models.CharField(max_length=256)
    age = models.PositiveIntegerField() # positive integer only accepts positives
    school = models.ForeignKey("School", related_name='students', on_delete=models.CASCADE)

    def __str__(self):
        return self.name

[我的问题是:Django如何知道如何选择School.name字段作为外键学校的匹配项?当我在“管理”页面上检查并添加学生时,我可以选择学校的名称(作为外键)。名称:年龄:学校=(下拉列表中的学校名称)

是元素顺序还是其他?

再次感谢!

django django-models
1个回答
0
投票

它没有,默认情况下它使用主键。它用self.name赋予学校[[renders,因为这是__str__返回的原因。

例如,如果您制作一个ModelChoiceField,它将呈现如下所示的HTML:

<select name="school"> <option value="1">Name of School 1</option> <option value="2">Name of School 2</option> <option value="3">Name of School 3</option> </select>

因此,当您提交表单时,Django会检索主键。获得Name of School 1是因为它在模型对象上调用了str(…) [Python-doc]。如果您指定了它,它将依次调用str(…),并且__str__的结果将用于

render学校。但是例如在URL,表单等中,主键用于从数据库中检索数据。

© www.soinside.com 2019 - 2024. All rights reserved.