我在管理网站上注册了一个模型。它的字段之一是长字符串表达式。我想将自定义表单字段添加到管理员中此模型的添加/更新页面。根据这些字段的值,我将构建长字符串表达式并将其保存在相关的模型字段中。
我怎样才能做到这一点?
我正在从符号构建数学或字符串表达式。用户选择符号(这些是不属于模型的自定义字段),当他们单击“保存”时,我从符号列表中创建一个字符串表达式表示并将其存储在数据库中。我不希望符号成为模型和数据库的一部分,而只是最终表达式的一部分。
无论是在你的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
要让额外的字段出现在管理中,只需:
- 编辑你的
admin.py
并将表单属性设置为引用您上面创建的表单。
- 在字段或字段集声明中包含新字段。
像这样:
class YourModelAdmin(admin.ModelAdmin):
form = YourModelForm
fieldsets = (
(None, {
'fields': ('name', 'description', 'extra_field',),
}),
)
UPDATE:
在 Django 1.8 中你需要添加fields = '__all__'
到元类YourModelForm
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)