类型错误:ForeignKey.__init__() 为参数“on_delete”获取了多个值

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

我正在尝试在 Django 的模型中定义一个foreign_key。但我收到错误“TypeError:ForeignKey。init()获得了参数'on_delete'的多个值”

我定义字段的方式是这样的:

class School(BaseModel):
    student_number = models.ForeignKey(Student,_("student_number"), max_length=200,on_delete=models.CASCADE)

我真的不明白为什么会收到此错误,因为我在其他类中具有完全相同的实现,并且它们不会引发错误。

django django-models foreign-keys
1个回答
0
投票

您遇到的错误是由于外键字段定义中的参数顺序不正确造成的。 on_delete 参数应在目标模型(本例中为 Student)之后指定。这是定义ForeignKey字段的正确方法:

班级学校(BaseModel): Student_number = models.ForeignKey(Student, on_delete=models.CASCADE, verbose_name=_("student_number"), max_length=200)

在更正后的代码中:

on_delete=models.CASCADE 位于目标模型(学生)之后。 verbose_name=_("student_number") 放在 max_length=200 之前。 此顺序对于避免“TypeError:ForeignKey.init()获得参数'on_delete'的多个值”错误是必要的。

确保所有模型字段定义保持一致的顺序,以避免此类错误。如果其他类工作正常,很可能是因为它们的参数顺序正确。如上所示更新 School 类,问题应该得到解决。

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