Ho un modello che ha un campo chiamato "stato":come modificare le scelte sulle pagine di amministrazione - Django
class Foo(models.Model):
...
state = models.IntegerField(choices = STATES)
...
Per ogni stato, le scelte possibili sono un certo sottoinsieme di tutti gli Stati. Per esempio:
if foo.state == STATES.OPEN: #if foo is open, possible states are CLOSED, CANCELED
...
if foo.state == STATES.PENDING: #if foo is pending, possible states are OPEN,CANCELED
...
Di conseguenza, quando i cambiamenti foo.state ad un nuovo stato, la sua serie di scelte possibili cambia.
Come posso implementare questa funzionalità su Aggiungi/modifica pagine di amministrazione?
Cosa succede nelle viste "aggiungi" per l'amministratore, dal momento che non c'è self.instance, non puoi dipendere dall'istanza per il filtraggio, sarebbe bello avere l'oggetto request lì –
Sì, questo ModelForm dovrebbe gestire l'assenza di self.instance e impostare le scelte disponibili iniziali in modo appropriato. Non so perché l'oggetto richiesta sia rilevante, ma tu hai accesso ad esso in ModelAdmin.add_view (http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py# L704). –
È possibile modificare le scelte nel modello stesso? Dopo tutto, le scelte SONO inizialmente specificate nel modello, quando si crea il campo. –