Django中的Foreignkey。如何正确创建模型

时间:2019-12-30 00:32:19

标签: python django model

我是Django的新手,我正在尝试为正在开发的网站创建模型。到目前为止,我知道如何实现我想要的一切,但是有一件事我无法正确理解。因此,在模型中,我的想法如下:

一个“类”类,可以具有管理员想要的多个“老师”和“学生”。我已经使用外键玩了一段时间,但是我只能设法将一个学生和老师关联到一个班级,并且每当我要显示“班级”信息时,都不会显示任何学生或老师。

from django.db import models
from datetime import datetime
# Create your models here.

LANGUAGE_CHOICES = (
('english','ENGLISH'),
('spanish', 'SPANISH'),
('german','GERMAN'),
('french','FRENCH'),
('portuguese','PORTUGUESE'),
)

class Clase(models.Model):
    name = models.CharField(max_length=300)
    language = models.CharField(max_length=10, choices=LANGUAGE_CHOICES, default='english')

    def __str__(self):
        return self.name


class Student(models.Model):
    name = models.CharField(max_length=300)
    clase = models.ForeignKey(Clase, on_delete=models.CASCADE)


    def __str__(self):
        return self.name


class Teacher(models.Model):
    name = models.CharField(max_length=300)
    total_earnings = models.IntegerField()
    month_earnings = models.IntegerField()
    clase = models.ForeignKey(Clase, on_delete=models.CASCADE)


    def __str__(self):
        return self.name

1 个答案:

答案 0 :(得分:3)

由于Clase可以具有“所需的任意数量的“教师”和“学生””,因此定义与ManyToManyFields的关系可能很有意义。我假设TeacherStudent可以有多个Clase

class Clase(models.Model):
    name = models.CharField(max_length=300)
    language = models.CharField(max_length=10, choices=LANGUAGE_CHOICES, default='english')
    students = models.ManyToManyField(Student)
    teachers = models.ManyToManyField(Teacher)

    def __str__(self):
        return self.name

然后,您可以删除StudentTeacher模型上的外键。现在,当您在管理员中编辑Clase时,您应该可以根据需要添加任意数量的学生和老师