Django-如何创建多对一关系

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

在我的应用程序中,存在多对一的关系,例如一位老师可以教授多个学科。因此,在管理面板中我无法模拟它。不能添加多个主题:Screenshot

这是我的代码:

models.py:

class Subject(models.Model):
    def __str__(self):
        return self.name

    name = models.CharField(max_length=200)
    credit = models.IntegerField()

class Teacher(models.Model):
    def __str__(self):
        return self.name

    name = models.CharField(max_length=100)
    email = models.CharField(max_length=100, null=True)
    chair = models.ForeignKey(Chair, on_delete=models.CASCADE)
    academic_degree = models.CharField(max_length=100)
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
python django
3个回答
0
投票

您已将其反转。 ForeignKeyMany-to-One,其中[[Many是定义它的模型的实例;您已经将ForeignKey模型上的Teacher声明为Subject模型,这意味着“许多老师只能教一个学科” –相反。因此在ForeignKey模型上将Teacher定义为Subject模型。并且也对其他类似的对象执行相同的操作。


0
投票
您正在做其他事情

0
投票
Django对与许多其他属性相关的属性提供了极大的支持。在您的情况下,多位老师可以教一个科目,多位老师可以教一个学科。为了像上面那样定义关系,您可以利用ManyToMany关系(这可以使许多科目与单个老师相关联)。如果您需要一对多关系,则可以使用ManyToOne关系。
© www.soinside.com 2019 - 2024. All rights reserved.