我是 django 初学者,所以代码可能是基本的或错误的,但无论如何......我有以下型号:
from django.db import models
from django.conf import settings
GRADE_CHOICES = (
('1', '1'),
('2', '2'),
('3', '3'),
('4', '4'),
('5', '5'),
('6', '6'),
('7', '7'),
('8', '8'),
('9', '9'),
('10', '10'),
)
class Professor(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=30)
def __str__(self):
rta = self.first_name+" "+self.last_name
return rta
class Student(models.Model):
first_name = models.CharField(max_length=20, blank=False, null=False)
last_name = models.CharField(max_length=30, blank=False, null=False)
def __str__(self):
rta = self.first_name+" "+self.last_name
return rta
class Subject(models.Model):
first_name = models.CharField(max_length=50)
students = models.ManyToManyField(Student, blank=True)
professors = models.ManyToManyField(Professor, blank=True)
def __str__(self):
return self.first_name
class Grade(models.Model):
value = models.CharField(choices=GRADE_CHOICES, max_length= 2)
subject = models.ForeignKey(Grade, on_delete=models.CASCADE, related_name='fk_grade')
student = models.ForeignKey(Student, on_delete=models.CASCADE, related_name='fk_student')
def __str__(self):
return self.value
要添加成绩,我需要选择科目和学生,因此我想根据学生所属的科目过滤学生。如果学生不在那个科目中,他不应该出现在列表中。
我使用的是 django 1.11 和 python 2.7。
您的对象Grade
不应与Subject
和Student
相关,而应与Subject
和Student
之间的关系相关。Sometinhg like:
class Professor(models.Model):
# ...
class Student(models.Model):
# ...
professors = models.ManyToManyField(Person, through='Subject')
class Subject(models.Model):
name = models.CharField(max_length=50)
student = models.ForeignKey(Student, on_delete=models.CASCADE)
professor = models.ForeignKey(Professor, on_delete=models.CASCADE)
value = models.CharField(choices=GRADE_CHOICES, max_length= 2)