[英]Pass model objects to choices field in django
我有一个称为Student
的模型,与名为Courses
的模型有很多关系。 我有另一个名为Attend
模型,在该模型中,我想获取学生正在修读的所有课程,并将其作为包含学生正在修读的课程的选择菜单传递给我。 我尝试使用外键“学生”获取ID,然后获取属于该学生的课程,并将其放入列表中,然后将其传递给选择项,但这显然不起作用。 我想知道如何将属于该学生的课程显示在选择菜单中。
这是我的模特。
class Attend(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE, default="")
time_signed_in = models.DateTimeField(auto_now_add=True)
isSignedIn = models.BooleanField(default=False)
# Below does not work, I get an error 'ForeignKey' object has no attribute 'id'
#courses = User.objects.get(id=student.id).courses
course = models.ForeignKey(Course, on_delete=models.CASCADE)
要渲染学生正在学习的课程,您应该尝试使用Django表单 。
如果我理解正确,则需要使用ModelMultipleChoiceField的表单:
允许选择一个或多个模型对象,适用于表示多对多关系。
class AttendForm(forms.Form):
courses = forms.ModelMultipleChoiceField(queryset=Courses.objects.filter(student__id=id))
该示例只会将数据显示给用户,然后检索其选择。 在这种情况下,使用ModelForm的方法略有不同。
每个ModelForm都有一个save()方法。 此方法从绑定到表单的数据创建并保存数据库对象。
ModelForm
是一种“数据库驱动”的表格,您可以在其中轻松执行许多涉及到数据库调用的任务。
注意:我在示例中使用的查询集只是一个示例,您不必那样使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.