im trying to set the ChoiceField length in my django form, I used the below:
from django.forms import TextInput, Textarea, ChoiceField
class SiteAdmin(admin.ModelAdmin):
formfield_overrides = {
models.CharField: {'widget': TextInput(attrs={'size':'25'})},
models.ChoiceField: {'widget': TextInput(attrs={'size':'25'})},
models.GenericIPAddressField: {'widget': TextInput(attrs={'size':'25'})},
}
...
and then got the error:
File "/var/www/infternal/sites/admin.py", line 18, in SiteAdmin
models.ChoiceField: {'widget': TextInput(attrs={'size':'25'})},
AttributeError: 'module' object has no attribute 'ChoiceField'
Does anyone know what i need to alter to change the select/dropdown length?
Thanks
Because you are defining your form set in the wrong way. ChoiceField is an attribute of Django forms, not Django models.
Your code should be like this :
SOME_CHOICES = (
('1', 'Choice1'),
('2', 'Choice2'),
)
class SiteAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': TextInput(attrs={'size':'25'})},
models.CharField: {'widget': ChoiceField(choices=SOME_CHOICES,max_length=25})},
models.GenericIPAddressField: {'widget': TextInput(attrs={'size':'25'})},
}
You could override formfield_for_foreignkey
or formfield_for_choicefield
to alter the field for foreign keys or choice fields respectively. For example:
def formfield_for_choice_field(self, db_field, request, **kwargs):
field = super(MyModelAdmin, self).formfield_for_choice_field(db_field, request, **kwargs)
field.widget.attrs['size'] = '25'
return field
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.