oma*_*mat 28 django overriding widget django-admin
我有一个自定义TagField表单字段.
class TagField(forms.CharField):
def __init__(self, *args, **kwargs):
super(TagField, self).__init__(*args, **kwargs)
self.widget = forms.TextInput(attrs={'class':'tag_field'})
Run Code Online (Sandbox Code Playgroud)
如上所示,它使用TextInput表单字段小部件.但在管理员中我希望它使用Textarea小部件显示.为此,有formfield_overrides钩子,但它不适用于这种情况.
管理声明是:
class ProductAdmin(admin.ModelAdmin):
...
formfield_overrides = {
TagField: {'widget': admin.widgets.AdminTextareaWidget},
}
Run Code Online (Sandbox Code Playgroud)
这对表单字段小部件没有影响,tags仍然使用TextInput小部件进行呈现.
任何帮助深表感谢.
-
omat
Mat*_*kel 45
django管理员为其许多字段使用自定义小部件.覆盖字段的方法是创建一个与ModelAdmin对象一起使用的Form.
# forms.py
from django import forms
from django.contrib import admin
class ProductAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ProductAdminForm, self).__init__(*args, **kwargs)
self.fields['tags'].widget = admin.widgets.AdminTextareaWidget()
Run Code Online (Sandbox Code Playgroud)
然后,在ModelAdmin对象中,指定表单:
from django.contrib import admin
from models import Product
from forms import ProductAdminForm
class ProductAdmin(admin.ModelAdmin):
form = ProductAdminForm
admin.site.register(Product, ProductAdmin)
Run Code Online (Sandbox Code Playgroud)
您还可以在此时覆盖查询集:例如,根据模型中的其他字段过滤对象(因为limit_choices_to无法处理此对象)
Mur*_*rlu 34
您可以通过扩展自Django 1.2以来的ModelForm Meta类来覆盖字段小部件:
class ProductAdminForm(forms.ModelForm):
class Meta:
model = Product
widgets = {
'tags': admin.widgets.AdminTextareaWidget
}
class ProductAdmin(admin.ModelAdmin):
form = ProductAdminForm
Run Code Online (Sandbox Code Playgroud)
https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-default-fields
对于特定字段而不是我使用的字段:
\n\n\n\n\n姜戈2.1.7
\n
class ProjectAdminForm(forms.ModelForm):\n class Meta:\n model = Project\n fields = \'__all__\'\n widgets = {\n \'project_description\': forms.Textarea(attrs={\'cols\': 98})\n }\nRun Code Online (Sandbox Code Playgroud)\n\nclass ProjectAdmin(admin.ModelAdmin):\n form = ProjectAdminForm\nRun Code Online (Sandbox Code Playgroud)\n\n谢谢,@Murat \xc3\x87orlu
\n| 归档时间: |
|
| 查看次数: |
40186 次 |
| 最近记录: |