Python Django:在同一模型但不同的类中添加外键
我是Django的新手。如何在不同类的同一型号中添加外键Python Django:在同一模型但不同的类中添加外键,python,django,foreign-keys,Python,Django,Foreign Keys,我是Django的新手。如何在不同类的同一型号中添加外键 from django.db import models class Student(models.Model): name = models.CharField(max_length=20) address = models.CharField(max_length=200) class Player(models.Model): student = models.ForeignKey( se
from django.db import models
class Student(models.Model):
name = models.CharField(max_length=20)
address = models.CharField(max_length=200)
class Player(models.Model):
student = models.ForeignKey(
self.Student, #?
on_delete = models.CASCADE,
)
sports_name = models.CharField(max_length=20)
您不需要使用self,只需留下类名学生:
如果您需要获取当前实例的属性:self.some_属性,请使用self以获取更多详细信息
您还可以将模型名称作为字符串传递:
class Player(models.Model):
student = models.ForeignKey(
'Student',
on_delete = models.CASCADE,
)
sports_name = models.CharField(max_length=20)
当相关模型尚未定义时,它被称为“关系”,并且非常有用。您实际上不需要使用self.Student.use
class Student(models.Model):
name = models.CharField(max_length=20)
address = models.CharField(max_length=200)
class Player(models.Model):
student = models.ForeignKey(self.Student, on_delete=models.CASCADE, null=True, blank=True)
sports_name = models.CharField(max_length=20)
别忘了使用
python manage.py makemigrations和python manage.py migrate
在您对模型进行更改之后
在某个时间点,您可能希望使用相同的模型来创建ForeignKey字段。为此,您可以使用self或当前模型作为外键“self”或“Player”作为字符串
class Student(models.Model):
name = models.ForeignKey(models.CharField(max_length=20))
address = models.CharField(max_length=20)
related_student = models.ForeignKey(Student, on_delete = models.CASCADE, null=True, blank=True)
对于这个例子,您可以参考。
好的。这应该行得通。我想我必须使用Django的泛型关系
class Student(models.Model):
name = models.ForeignKey(models.CharField(max_length=20))
address = models.CharField(max_length=20)
related_student = models.ForeignKey(Student, on_delete = models.CASCADE, null=True, blank=True)