Ho un semplice modello di Django come:Filtraggio Django Admin da Null/Non è Null
class Person(models.Model):
referrer = models.ForeignKey('self', null=True)
...
In ModelAdmin di questo modello, come vorrei permettere che venga filtrato da se o non referrer è nullo? Per impostazione predefinita, l'aggiunta del referrer a list_filter provoca la visualizzazione di un menu a discesa che elenca il record ogni persona, che può essere tra centinaia di migliaia, impedendo in modo efficace il caricamento della pagina. Anche se carica, non riesco ancora a filtrare secondo i criteri che voglio.
Ad esempio, come si modifica questo in modo che il menu a discesa elenca solo le scelte "Tutto", "Nullo" o "Non Null"?
Ho visto alcuni posts che pretendono di realizzare qualcosa di simile utilizzando sottoclassi di FilterSpec personalizzate, ma nessuno di loro spiega come usarli. I pochi che ho visto sembrano applicare a tutti i campi di tutti i modelli, cosa che non vorrei. Inoltre, c'è la documentazione zero per FilterSpec, il che mi rende nervoso, perché non voglio investire un sacco di codice personalizzato legato ad una classe interna transitoria che potrebbe scomparire dalla prossima versione.
In 1.4 c'è '' BooleanFieldListFilter'' che lo farà di default. '' list_filter = (('myfield', BooleanFieldListFilter), 'other_field', 'other_field2') ''. Nei campi non booleani ottiene lo stesso effetto di null/not null. –
@KyleMacFarlane Sembra non funzionare per un campo DateTime se – Kos
Utilizzando 1.6 sembra non funzionare anche per ForeignKeys. –