2011-11-22 14 views
6

Vorrei limitare le scelte per un ForeignKey nell'interfaccia utente di amministrazione utilizzando limit_choices_to; tuttavia, mi piacerebbe ottenere questo risultato senza modificare il modello, dal momento che il modello viene importato da una libreria, di cui non ho il controllo. Qual è il modo di conseguirlo in modo dinamico? O potrei usare un campo sul modello admin per essere in grado di raggiungere questo obiettivo?Limitazione delle scelte dell'amministratore utilizzando limit_choices_to

Grazie, --Eytan

risposta

11

Django fornisce un gancio di amministrazione per modificare un set di query chiavi esterne: formfield_for_foreignkey

class MyModelAdmin(admin.ModelAdmin): 
    def formfield_for_foreignkey(self, db_field, request, **kwargs): 
     if db_field.name == "car": 
      kwargs["queryset"] = Car.objects.filter(owner=request.user) 
     return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 
+0

vi ringrazio molto Yuji! Questo mi ha aiutato a ottenere quello che stavo cercando. Immagino che il modo corretto di fare sarebbe attraverso la personalizzazione del ModelForm per ModelAdmin, ma questo è sicuramente più facile :) – daniyalzade

+0

@daniyalzade nessun problema! Questo è il modo corretto, o perché è nella documentazione di amministrazione di django? Sostituire l'attributo 'form' dovrebbe essere fatto quando i metodi forniti da django non sono sufficienti:) I miei 2 centesimi. –

Problemi correlati