有没有办法加载不同的管理表单来编辑对象,具体取决于需要更新的对象?
例如 - 我们有一个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中获取对象字段。
答案 0 :(得分: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']
答案 1 :(得分: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']