我希望使用具有以下模型和约束的数据库进行创建。
1) Student with attributes name, roll number
2) Exam with attributes exam_code, exam_subject
3) Option with attributes option_name, and ManyToManyField on Exam
4) Application with user, exam, ManyToManyField on Options(new)
基本上会有很多考试和选择。学生有权选择与其考试选择有关的一部分选项。
编辑:使用新模型应用程序,我认为问题归结为使用javascript in the interface来限制界面中可用的选项。
接下来的挑战在于处理具有多个科目的学生,他们的选项子集应该是两个考试可用的选项交叉(因为两个不同的考试可能有共同的选项)。关于这一部分的任何指导都会很棒。
答案 0 :(得分:1)
目前看来,学生并没有真正发挥作用。重要的是所讨论的特定考试有哪些选项(学生名义上只是相关的,因为特定考试是一个数据点)。
因此,在这种情况下,学生可用的选项始终是:
some_student.exam_taken.available_options.all()
您可能想要的是,学生能够参加多个考试,然后为所有考试提供所有可用选项 - 这是一种聚合。 / p>
如果是这种情况,首先,您需要在学生和考试之间建立M2M关系(而不是外键)。然后,您可以通过以下方式从所有考试中获得所有可用选项:
Option.objects.filter(exam__student=some_student).distinct()