2016-11-11 3 views
1

im die ChoiceField Länge in meine django Form zu setzen versucht, habe ich die folgenden:django admin, Auswahlfeldlänge einstellen?

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'})}, 
    } 
    ... 

und bekam dann den Fehler:

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' 

Weiß jemand, was ich das ändern müssen sich ändern Auswahl/Dropdown-Länge?

Dank

Antwort

0

Da Sie Ihren Formularsatz in der falschen Art und Weise definieren. ChoiceField ist ein Attribut von Django-Formen, nicht von Django-Modellen.

sollte Ihr Code wie folgt sein:

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'})}, 
    } 
+0

meine Auswahl kommt von Fremdschlüsseln, was würde ich in diesem Fall tun? – AlexW

+0

@AlexW Ihr aktuelles Problem war dieser Fehler "AttributeError: 'Modul' Objekt hat kein Attribut 'ChoiceField'" Welches wird durch meine Antwort gelöst werden. Wenn Sie eine andere Frage stellen müssen, fragen Sie sie bitte als eine andere Frage –

+0

@AlexW, wenn Ihre Wahl von Fremdschlüsseln kommt, berechnen Sie sie hier und setzen Sie sie an Stelle von SOME_CHOICES in "choices = SOME_CHOICES". –

0

Sie außer Kraft setzen könnte formfield_for_foreignkey oder formfield_for_choicefield das Feld für Fremdschlüssel oder Auswahlfelder bzw. zu verändern. Zum Beispiel:

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