1

有没有办法根据需要更新的对象加载不同的管理表单来编辑对象?

例如 - 我们有一个MPTTModelAdmin对象。对于根对象,我们不想看到一些字段:

class RootObjectForm(ModelForm):
    class Meta:
        model = Author
        exclude = ('title',)


class ChildObjectForm(ModelForm):
    class Meta:
        model = Author
        fields = ('name', 'birth_date')

但我不知道如何获取forms.py 或admin.py 中的对象字段。

4

2 回答 2

0

在 forms.py 文件中,您可以分两个阶段获取对象字段及其值。

1:提交表单时。clean 方法进行初始验证。

def clean(self):
    """ validation of address form """
    cleaned_data = super(WebsiteAddressForm, self).clean()
    field1_value = self.cleaned_data.get("field1")
    print field1_value
    return cleaned_data

2:初始化表单时。____init____ 方法将调用。

class MyForm(forms.ModelForm):
    class Meta:
        model = Model1

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        #self.fields['field1']
于 2013-10-25T11:49:22.247 回答
0

您始终可以为 ModelAdmin 类提供自己的表单类:https ://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form

从那里您可以通过键访问字段,就像任何其他 Django 表单一样:

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel

    def __init__(self, *args, **kwargs):
        super(MyModeForm, self).__init__(*args, **kwargs)

        # access whatever field by key
        # self.fields['field-name']
于 2013-10-25T11:23:35.687 回答