Ho un modello di Django, esempio di codice di seguito (non il mio codice vero e proprio):Controllo Django ModelForm uscita
class Department(models.Model):
name = models.CharField(max_length=100)
abbreviation = models.CharField(max_length=4)
Diciamo che faccio la seguente nella shell Django:
>>> Department(name='Computer Science',abbreviation='C S ').save()
>>> Department(name='Mathematics',abbreviation='MATH').save()
>>> Department(name='Anthropology',abbreviation='ANTH').save()
Ora ho quei quattro reparti memorizzati nel mio database. Dire che abbiamo un'altra classe, Course
, che appartiene a un Department
:
class Course(models.Model):
department = models.ForeignKey('Department')
number = models.IntegerField()
class CourseForm(ModelForm):
class Meta:
model = Course
Se rendo l'oggetto ModelForm
direttamente in un modello semplicemente referncing una variabile, dire form
, che ha ottenuto tramandata, i Dipartimenti appaiono in un casella a discesa (una casella di selezione HTML). Fin qui tutto bene.
Il problema è: gli elementi nella casella di selezione sono ordinati per ID. Così appaiono come:
- Tecnologia dell'informazione
- Matematica
- Antropologia
Ma, voglio che in ordine alfabetico, cioè
- Antropologia
- Tecnologia dell'informazione
- Matematica
Come posso cambiare il modo in cui questi elementi sono ordinati in t codice ModelForm
o nel codice Model
anziché nel modello?
E in generale, come è possibile personalizzare il modo in cui un determinato campo o widget funziona quando generato da un ModelForm
?
Grazie! Questo è ESATTAMENTE quello che stavo cercando. –
Wow - ottima risposta! – sage