我是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
答案 0 :(得分:3)
由于Clase
可以具有“所需的任意数量的“教师”和“学生””,因此定义与ManyToManyFields
的关系可能很有意义。我假设Teacher
和Student
可以有多个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
然后,您可以删除Student
和Teacher
模型上的外键。现在,当您在管理员中编辑Clase
时,您应该可以根据需要添加任意数量的学生和老师