【发布时间】:2018-10-28 10:10:14
【问题描述】:
我正在使用 Django 和 Django Rest Framework 编写一个 REST API。我目前正在编写模型。
我有一个学生模型、一个问题模型和一个答案模型。
class Question(models.Model):
question_text = models.CharField()
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
answer_text = models.CharField()
class Student(models.Model):
name = models.CharField()
每个问题学生应该能够选择一个且只能选择一个答案。 所以我正在考虑设计一个学生选择的答案模型——这样我就可以让学生通过关系来选择——就像这样:
class StudentPickedAnswer(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE)
answer = models.ForeignKey(Answer, on_delete=models.CASCADE)
我发现class Meta 有一个unique_together 约束。但在我看来,它无法指定关系。我需要这样的东西;
class Meta:
unique_together = ('student', 'answer__question')
如何实现学生每个答案只能选择一个问题?还是挑选有关系的模型是一个糟糕的设计?
【问题讨论】:
-
unique_together是在数据库级别指定的,这对关系一无所知,所以不,您不能“通过”外键查看。 -
@WillemVanOnsem 你知道我怎样才能做得更好吗?我正在考虑在 API 的序列化程序
validate方法中强制执行它。
标签: django django-models django-2.1