我对我的第一个Django项目工作的ModelForm预填充复选框。Django的:使用自定义查询
我有两个模型之间的许多一对多的关系:用户和项目。 虽然更新项目,我想表明与添加新成员,删除现有成员字段根据当前工程用户正确选择形式。
这里是我试过到目前为止:
- 从URL
- 获取当前项目通过当前项目,以标准格式
- 形式,自定义查询集运行。
问题:不显示查询集的结果。
在views.py
类UpdateProject(LogInRequiredMixin,更新视图):
""" Class to Edit Project.
"""
form_class = ProjectUpdateForm
template_name = 'project/create.html'
def get_object(self):
self.project_instance = models.Project.objects.get(pk=self.kwargs['project'])
return self.project_instance
def get_form_kwargs(self):
kwargs = super(UpdateProject, self).get_form_kwargs()
kwargs.update({'project': self.project_instance})
return kwargs
对于形式 ProjectUpDateForm
class ProjectUpdateForm(forms.ModelForm):
""" Form to update Project Field. """
add_member = forms.CharField(label="Add New Members", widget=forms.CheckboxSelectMultiple)
del_member = forms.CharField(label="Remove Members", widget=forms.CheckboxSelectMultiple)
def __init__(self, *args, **kwargs):
self.project = kwargs.pop('project')
super(ProjectUpdateForm, self).__init__(*args, **kwargs)
print MyUser.objects.exclude(pk__in=self.project.members.all())
print MyUser.objects.filter(pk__in=self.project.members.all())
self.fields['add_member'].queryset = MyUser.objects.exclude(pk__in=self.project.members.all())
self.fields['del_member'].queryset = MyUser.objects.filter(pk__in=self.project.members.all())
# Rest of Class Logic
打印对帐单的工作,并返回正确的结果,但我无法在应用中查看结果。它显示空白。
此外,我想知道他们更容易达到相同的方式吗? (在我看来,我不应该明确地传递项目?)
这两种形式的Meta类是什么? – Pcriulan
@Pcriulan 表单 类元: 模型=项目 栏= [“标题”,“描述”] 对于View,我没有使用元 –
好了,所以你需要添加你的自定义字段中的字段: fields = ['title','description','add_member','del_member']。这样你就可以告诉django了解这些领域。 – Pcriulan