Django-如何建立多对一关系

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

Django-如何建立多对一关系

这是我的代码:

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)
xiaolongxiadoudou 回答:Django-如何建立多对一关系

您已将其反转。 ForeignKey多对一,其中 Many 是定义它的模型的实例;您已将ForeignKey模型中的Teacher声明为Subject模型,这意味着“许多老师只能教一个学科” –相反。 >

因此,在ForeignKey模型上将Teacher定义为Subject模型。并且对其他类似的对象也是如此。

,

您正在采用其他方式

您应该将'ForeighKey'关系放在'Subject'模型中,而不是'Teacher'

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

    name = models.CharField(max_length=200)
    credit = models.IntegerField()
    teacher = models.ForeignKey(Teacher,on_delete=models.CASCADE)

这是假设一个科目只有一位老师。老师可以有多个科目。如果同一主题的老师很多,那么您需要使用ManyToMany()关系。

,

Django对与许多其他属性相关的属性有极大的支持。在您的情况下,多位老师可以教授一门学科,多位老师可以教授一门学科。为了像上面那样定义关系,您可以利用ManyToMany关系(这可以使许多科目与单个老师相关联)。如果需要一对多关系,可以使用ManyToOne关系。

subject = models.ManyToManyField(subject)
本文链接:https://www.f2er.com/3159891.html

大家都在问