【发布时间】:2021-06-22 14:57:51
【问题描述】:
我知道这可能是重复的,或者在这里问这样一个简单的问题。如果您知道如何操作并要求提供更多详细信息以帮助我解决问题,请提供帮助。免责声明:我是 django 初学者。
我有一个具有外键字段的模型。我希望将选项传递到复选框中的外键字段中。我无法让它工作。这些是我所拥有的
class Students(models.Model):
school = models.ForeignKey(School, on_delete=models.CASCADE)
name = models.CharField(max_length=200,unique=True,help_text="Student's name")
form = models.ForeignKey(Form, on_delete=models.CASCADE)
class Form(models.Model):
school = models.ForeignKey(School, on_delete=models.CASCADE)
form = models.CharField(max_length=20)
表单模型中的所有选项都将作为学生模型中的复选框传递
我的 forms.py 如下所示
class StudentsForm(forms.ModelForm):
def __init__(self, school, *args, **kwargs):
super(StudentsForm, self).__init__(*args, **kwargs)
self.fields['form'] = forms.ModelChoiceField(
queryset=Form.objects.filter(school=school))
class Meta:
model = Students
fields = ("name",'form')
My views.py
class StudentView(LoginRequiredMixin,CreateView):
model = Students
form_class = StudentsForm
template_name = 'add_student.html'
success_url = reverse_lazy('students')
def get_form_kwargs(self):
kwargs = super(StudentView, self).get_form_kwargs()
kwargs['school'] = self.request.user.school
return kwargs
请问我可以将选项设置为复选框吗???
【问题讨论】:
-
self.fields['form'] = forms.ModelChoiceField( queryset=Form.objects.filter(school=school))为了过滤school你的Form 类应该有一个学校字段。 -
@Vincent,是的,它有一个学校领域,只是我没有包括它。
-
您的 Students 类有一个
school字段,但没有 Form 类。请添加您的表单类包含的所有字段 -
你未来的自己可能希望你最好不要将模型命名为“Form”,以避免与 Django 中已经存在的表单层混淆。
-
@Vincent,已添加