我正在使用默认的 m2m 小部件通过中间模型实现 m2m 关系。我有Person
and Project
相关模型使用Membership
model.
到目前为止,我已经成功地在Person
更改形式并正确创建中间模型实例,但我的问题是在Person
正在修改中。
这是我正在使用的表单类PersonAdmin
:
class PersonForm(forms.ModelForm):
projects = forms.ModelMultipleChoiceField(models.Project.objects.all(),
widget=widgets.FilteredSelectMultiple(
verbose_name="Projects",
is_stacked=False,
attrs={'rows':'10'}))
projects.required = False
class Meta:
model = models.Person
fields = ['name', 'last_name', 'personal_id_number',
'personal_id_type', 'administrative_viability',
'observations']
def save(self, commit=True):
ret = super(PersonForm, self).save(commit)
for p in self.cleaned_data['projects']:
models.Membership.objects.create(person=self.instance, project=p)
return ret
And the PersonAdmin
itself:
class PersonAdmin(admin.ModelAdmin):
form = PersonForm
def get_changeform_initial_data(self, request):
initial = super(PersonAdmin, self).get_changeform_initial_data(request)
initial['projects'] = models.Person.get(pk=initial['person']).project_set.all()
return initial
我尝试设置初始值projects
在方法中get_changeform_initial_data
像这样,但它不起作用。总的来说,它看起来像是被忽略了,就好像我没有正确地覆盖它一样。
任何帮助将不胜感激!