Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:在同一模型但不同的类中添加外键_Python_Django_Foreign Keys - Fatal编程技术网

Python 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

我是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(
        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)