繁体   English   中英

将模型对象传递给Django中的options字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM