In Django-Modellen definiert ein ForeignKey eine Beziehung zwischen zwei Modellen. Diese Dokumentation zeigt, wie Sie die für ein ForeignKey-Feld in einem Django ModelForm verfügbaren Auswahlmöglichkeiten filtern und so sicherstellen, dass nur relevante Optionen angezeigt werden.
Im gegebenen Szenario möchten Sie erstellen ein Formular zum Hinzufügen von Kunden, die sich auf ein bestimmtes Unternehmen beziehen. Der „base_rate ForeignKey“ des Kunden sollte nur die mit dem betreffenden Unternehmen verknüpften Tarife anzeigen. Um dies mit Django 1.0 zu erreichen, befolgen Sie diese Schritte:
form.fields["base_rate"].queryset = Rate.objects.filter(company_id=the_company.id)
Dieser Abfragesatz stellt sicher, dass nur Tarife, die sich auf das ausgewählte Unternehmen beziehen, als Auswahl im Formular verfügbar sind.
Die veröffentlichte Lösung für Django 0.96 ist tatsächlich so ein Hack, der die native Funktionalität von Django-Formularen umgeht. Es ändert das Auswahlattribut des ForeignKey-Felds direkt, was zu Inkonsistenzen führen kann und wird nicht für Produktionscode empfohlen.
In der Django-Dokumentation heißt es eindeutig, dass die Auswahlmöglichkeiten eines ModelChoiceField durch definiert werden sein queryset-Attribut. Indem Sie dieses Attribut explizit auf das entsprechende QuerySet festlegen, können Sie die Fremdschlüsselauswahl an die gewünschte Teilmenge von Objekten anpassen. Diese Methode vermeidet jegliches Hacken und gewährleistet einen sauberen und wartbaren Ansatz.
Das obige ist der detaillierte Inhalt vonWie filtere ich ForeignKey-Auswahlmöglichkeiten in einem Django ModelForm?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!