小编jfl*_*ezf的帖子

django管理员动态设置changeform初始数据

我正在使用默认的m2m小部件通过中间模型实现m2m关系。我有PersonProject与使用该Membership模型相关的模型。

到目前为止,我已经成功地以Person更改形式显示了默认的m2m小部件并正确创建了中间模型实例,但是我的问题Person是在修改a时填充小部件。

这是我正在使用的表单类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
Run Code Online (Sandbox Code Playgroud)

PersonAdmin本身:

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
Run Code Online (Sandbox Code Playgroud)

我试图像这样projects在方法中设置初始值get_changeform_initial_data,但它不起作用。总的来说,它似乎被忽略了,好像我没有适当地覆盖它。 …

django django-forms django-admin

4
推荐指数
1
解决办法
1687
查看次数

标签 统计

django ×1

django-admin ×1

django-forms ×1