django admin-添加不属于模型的自定义表单字段

我在管理站点中注册了一个模型。它的字段之一是长字符串表达式。我想将自定义表单字段添加到管理中此模型的添加/更新页面,基于这些字段值,我将构建长字符串表达式并将其保存在相关的模型字段中。

我怎样才能做到这一点?

更新:基本上我正在做的是从符号中构建数学表达式或字符串表达式,用户选择符号(这些是自定义字段,不属于模型的一部分),然后单击“保存”,然后从符号列表并将其存储在数据库中。我不希望符号是模型和数据库的一部分,而只是最终表达式。

回答:

你可以在admin.py或单独的forms.py中添加ModelForm类,然后像往常一样在其中声明你的额外字段。我还给出了一个示例,说明如何在form.save()中使用这些值:

from django import forms

from yourapp.models import YourModel

class YourModelForm(forms.ModelForm):

extra_field = forms.CharField()

def save(self, commit=True):

extra_field = self.cleaned_data.get('extra_field', None)

# ...do something with extra_field here...

return super(YourModelForm, self).save(commit=commit)

class Meta:

model = YourModel

要使其他字段仅出现在管理员中:

  1. 编辑你的admin.py并设置form属性以引用你在上面创建的表单
  2. 将新字段包括在字段或字段集声明中

像这样:

class YourModelAdmin(admin.ModelAdmin):

form = YourModelForm

fieldsets = (

(None, {

'fields': ('name', 'description', 'extra_field',),

}),

)

更新:在django 1.8中,你需要添加fields = '__all__'YourModelForm的元类。

以上是 django admin-添加不属于模型的自定义表单字段 的全部内容, 来源链接: utcz.com/qa/427811.html

回到顶部