Python 在多个表django中使用相同外键时出错
我有一张名为Python 在多个表django中使用相同外键时出错,python,django,django-models,Python,Django,Django Models,我有一张名为 class student(models.Model): std_name= models.CharField(max_length=20 , blank=False, null=False) std_username = models.CharField(max_length=20 , blank=False, null=False) 和另一个名为std_admission的表 class std_admission(models.Mod
class student(models.Model):
std_name= models.CharField(max_length=20 , blank=False, null=False)
std_username = models.CharField(max_length=20 , blank=False, null=False)
和另一个名为std_admission的表
class std_admission(models.Model):
admission_date= models.CharField(max_length=20 , blank=False, null=False)
std_name = models.ForeignKey(student, default=1, on_delete=models.SET_DEFAULT)
std_username = models.ForeignKey(student, default=1, on_delete=models.SET_DEFAULT)
当我键入makemigrations时,会出现此错误
与反向访问器冲突您必须手动添加“相关名称”进行反向搜索
默认值为
foreignmodel\u set
,但如果使用两次,就会产生冲突,这就是为什么在您的案例中需要它。您必须手动添加“相关的\u名称”进行反向搜索
默认值为
foreignmodel\u set
,但如果使用两次,就会产生冲突,这就是为什么在您的情况下需要它。首先,您应该始终使用大写字母书写类名,例如:
班级学生(models.Model)
其次,不需要从Student
表中添加两次外键
std_name=models.ForeignKey
够了
当您添加这两个选项时,它们不会引用学生姓名和用户名。相反,它们都给出student
实例的pk。
您最好将外键的名称从std\u name
更改为仅student
student=models.ForeignKey
现在,如果您想从录取表中获取该学生的用户名,您可以这样做:
std\u admission.objects.get(pk=some pk).std\u name.username
这将为您提供这个特殊的std\u入学实例的学生用户名。如果使用过滤器而不是get
,则将无法使用
.std\u name.username
as过滤器将返回一个查询集,您必须使用
[i].std_name.username.
首先,您应该使用大写字母书写类名,例如:
班级学生(models.Model)
其次,不需要从Student
表中添加两次外键
std_name=models.ForeignKey
够了
当您添加这两个选项时,它们不会引用学生姓名和用户名。相反,它们都给出student
实例的pk。
您最好将外键的名称从std\u name
更改为仅student
student=models.ForeignKey
现在,如果您想从录取表中获取该学生的用户名,您可以这样做:
std\u admission.objects.get(pk=some pk).std\u name.username
这将为您提供这个特殊的std\u入学实例的学生用户名。如果使用过滤器而不是get
,则将无法使用
.std\u name.username
as过滤器将返回一个查询集,您必须使用
[i].std_name.username.
那么,如果我使用foriegnkey在模型中手动添加相关的_name='+',应该可以正常工作吗?并且能够在我使用它的模型中获取存储在名为(foreignkey)字段中的数据?因此,如果我在模型中手动添加相关的_name='+',我使用foriegnkey,它应该可以正常工作吗?在我使用它的模型中,能得到存储在名为(foreignkey)字段中的数据吗?