# "models.py"
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=20) # Here
last_name = models.CharField(max_length=20) # Here
# "admin.py"
from django import forms
from django.contrib import admin
from .models import Person
class PersonForm(forms.ModelForm): # Here
class Meta:
widgets = {
'first_name': forms.TextInput(attrs={'size':'10'}),
}
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
form = PersonForm # Here
或者:
# "admin.py"
from django import forms
from django.contrib import admin
from .models import Person
class PersonForm(forms.ModelForm): # Here
first_name = forms.CharField(
widget=forms.TextInput(attrs={'size':'10'})
)
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
form = PersonForm # Here
# "admin.py"
# ...
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name') # Here
list_editable = ('first_name', 'last_name') # Here
list_display_links = None # Here
form = PersonForm
此时,first_name字段的大小在**“更改列表”页**上保持不变,如下图所示:
但是,如果使用formfield_overrides,如下所示:
# "admin.py"
from django.contrib import admin
from .models import Person
from django.db import models
from django import forms
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name')
list_editable = ('first_name', 'last_name')
list_display_links = None # Here
formfield_overrides = { # Here
models.CharField: {'widget': forms.TextInput(attrs={'size': '10'})},
}
2条答案
按热度按时间fumotvh31#
定义覆盖字段小部件的自定义模型表单:
然后在您的模型管理中使用您的表单:
注意设置
TextInput(attrs={'size': '20'})
只会影响表单字段在模型管理中的显示方式,如果你想改变数据库中列的长度,你应该设置max_length
。r7s23pms2#
例如,下面有**
first_name
和last_name
字段**,它们都是**Person
模型**中的CharField():然后,下面的两组代码只能通过将
PersonForm
赋值给PersonAdmin
中的form
来改变**first_name
字段**的大小:或者:
然后,在**“添加”和“更改”页上,仅更改
first_name
字段**的大小,如下所示:但是,将
PersonForm
分配给PersonAdmin
中的form
不会更改**“更改列表”页面上first_name
字段的大小。因此,如果使
first_name
和last_name
字段**可编辑,如下所示:此时,
first_name
字段的大小在**“更改列表”页**上保持不变,如下图所示:但是,如果使用formfield_overrides,如下所示:
不仅**
first_name
字段的大小,而且last_name
字段的大小也在“更改列表”页上更改,如下所示。* 我不知道如何仅更改“更改列表”页上的first_name
字段**: