2010-06-17 11 views
11

Ich habe eine Datenbank, die die Interaktion zwischen zwei verschiedenen Teams verfolgt (dargestellt in der Admin-Oberfläche von zwei verschiedenen Gruppen). Für einige Felder habe ich einen Fremdschlüssel zur Benutzerdatenbank, und ich möchte die Dropdown-Personen nur auf die spezifischen Gruppen beschränken.Wie kann das Fremdschlüssel-Dropdown mit Einschränkungen eingeschränkt werden?

Wenn jemand irgendwelche Vorschläge hat, würde es sehr geschätzt werden!

Antwort

16

Sie suchen nach limit_choices_to.

+0

Hey danke für deine Antwort! Ich denke jedoch, dass die Benutzergruppenbeziehung auf verschiedenen Tabellen in django admin liegt, wie würde ich in diesem Fall filtern? – FurtiveFelon

+0

Mit 'Q' Objekten. 'Q (group__icontains = u'user ')' –

+0

Hey Ignacio, ich bin immer noch irgendwie verwirrt, wie das geht. Nachdem ich den Code für das auth-Modul weiter untersucht habe, habe ich festgestellt, dass Gruppen wie folgt in der Benutzerklasse definiert sind: groups = models.ManyToManyField (Group, verbose_name = _ ('groups'), blank = True). Die Abfrage basiert auf Benutzern, daher möchte ich überprüfen, ob der aktuelle Benutzer in der Gruppe "Legal" ist. Beachten Sie, dass das Gruppenmodell eine ID hat, daher wird der Name nicht direkt im Benutzer gespeichert. Vielen Dank für Ihre Hilfe! – FurtiveFelon

2

Sie können die darunter liegende queryset für das Feld Form ändern: How do I filter ForeignKey choices in a Django ModelForm?

+0

Es scheint zu sagen, dass es in der Ansicht getan werden sollte, aber ich bin mir nicht sicher, wie auf die Ansicht zugreifen, das einzige, worauf ich zugreifen kann, ist die Modellklasse und die Klasse modeladmin. Irgendwelche besonderen Richtungsvorschläge würden sehr geschätzt werden! – FurtiveFelon

+0

Sie sollten ein benutzerdefiniertes Formular verwenden und es in dem Formular "__init__" tun! def __init __ (selbst, * args, ** kwargs): super (MyForm, selbst) .__ init __ (* args, ** kwargs) self.fields ["benutzer"]. Querieset = User.objects.filter (. ..) –

Verwandte Themen