[英]How to change size of CharField
此代碼正在更改 class 中所有 CharField 的大小。如何更改一個 CharField 的大小?
formfield_overrides = {
models.CharField: {'widget': TextInput(attrs={'size': '20'})},
}
定義一個自定義模型形式,該形式將覆蓋您的字段的小部件:
from django import forms
class MyForm(forms.ModelForm):
class Meta:
widgets = {
'my_field': forms.TextInput(attrs={'size': '20'}),
}
然后在模型管理員中使用您的表單:
class MyModelAdmin(admin.ModelAdmin):
form = MyForm
...
請注意,設置TextInput(attrs={'size': '20'})
僅會影響在模型admin中顯示表單字段的方式。 如果要更改數據庫中列的長度,則應設置max_length
。
class MyModel(models.Model):
my_field = models.CharField(max_length=20)
例如,下面的Person
model中有first_name
和last_name
字段都是CharField() :
# "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
然后,下面的 2 組代碼只能通過將PersonAdmin
分配給PersonForm
中的form
來更改first_name
字段的大小:
# "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
然后,在“添加”和“更改”頁面上只更改first_name
字段的大小,如下所示:
但是,將PersonForm
分配給PersonAdmin
中的form
不會更改“更改列表”頁面上first_name
字段的大小。
因此,如果使first_name
和last_name
字段可編輯,如下所示:
# "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'})},
}
不僅first_name
字段的大小而且last_name
字段的大小都在“更改列表”頁面上更改,如下所示。 *我不知道如何只更改“更改列表”頁面上的first_name
字段:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.