gpt4 book ai didi

Django - models.ForeignKey

转载 作者:行者123 更新时间:2023-12-04 09:56:58 25 4
gpt4 key购买 nike

感谢您检查这一点。

我的愚蠢怀疑:

我在 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 字段作为外键学校的匹配项?
当我查看管理页面并添加学生时,我可以选择学校的名称(作为外键)。
姓名:
年龄:
学校 =(下拉学校名称)

是元素的顺序还是其他什么?

再次感谢!

最佳答案

它没有,它默认使用主键。它将学校呈现为 self.name因为这就是 __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__ 的结果将用于渲染学校。但例如在 URL、表单等中,主键用于从数据库中检索数据。

关于Django - models.ForeignKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61898097/

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