我有以下(简化)数据库模型,我将该应用程序的用户称为“老师”:
class Student(models.Model):
teacher = models.ForeignKey('auth.User', related_name="students")
name = models.TextField()
class Task(models.Model):
teacher = models.ForeignKey('auth.User', related_name="tasks")
description = models.TextField()
class Grade(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE)
task = models.ForeignKey(Task, on_delete=models.CASCADE)
grade = models.FloatField()
如何确保成绩仅属于一个teacher
?还是有另一种方法可以改善我的模型吗?
由于
修改 我刚刚发现了另一个回答类似问题的SO问题: In django, how to limit choices of a foreignfield based on another field in the same model?
我是对的,我“必须在输入处确保它吗?”
答案 0 :(得分:1)
尝试Django Smart Selects我们在项目中使用它们来解决这个确切的问题
答案 1 :(得分:0)
您可以尝试使用unique_together(Here)找到解决方法,并根据您的特殊需要覆盖它。
但这可能并不容易:https://docs.djangoproject.com/en/dev/ref/models/options/#unique-together
但是在插入之前检查值是绝对错误的; - )
答案 2 :(得分:0)
也许老师应该是一个单独的班级,任务班的老师应该与学生班的老师联系。也许使用through argument是它的选项。