2017-03-06 5 views
0

Ich habe ein Modell, nennen wir es X, die eine ManyToManyField hat, die eine beliebige Anzahl von Benutzern auflisten kann. In der Admin-Oberfläche (die einzige Stelle, an der diese X-Objekte erstellt werden können), möchte ich alle möglichen Benutzer filtern, ob sie aktiv sind (is_active=True) oder nicht. Alte Instanzen von X können inaktive Benutzer haben, das ist in Ordnung. Es sind nur neue Instanzen von X, denen keine inaktiven Benutzer hinzugefügt werden können.Filter alle Benutzer zu zeigen nur aktive in Admin-Schnittstelle

Wie kann ich das tun?

Antwort

2

Am einfachsten wäre es, einen benutzerdefinierten form in Ihrer Admin-Klasse zu verwenden. Dort können Sie den queryset Parameter des ModelMultipleChoiceField gesetzt:

# forms.py 
class XForm(forms.ModelForm): 
    # or whatever the name of the ManyToManyField is 
    users = forms.ModelMultipleChoiceField(queryset=User.objects.filter(is_active=True)) 

    class Meta: 
     model = X 
     fields = '__all__' 

# admin.py 
class XAdmin(ModelAdmin): 
    form = XForm 

site.register(X, XAdmin) 
+0

so weit war einfacher als ich erwartet hatte. Danke vielmals. – Sardathrion

Verwandte Themen