我對我的第一個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