Wie filtere ich ForeignKey-Auswahlmöglichkeiten in einem Django ModelForm?

DDD
Freigeben: 2024-11-17 02:44:03
Original
781 Leute haben es durchsucht

How to Filter ForeignKey Choices in a Django ModelForm?

Anpassen von ForeignKey-Auswahlmöglichkeiten in einer Django-Modellform

Kontext

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.

Fremdschlüsselauswahlmöglichkeiten filtern

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:

  1. Setzen Sie in der Ansichtsfunktion vor dem Rendern der Formularvorlage das Queryset-Attribut des gewünschten ForeignKey-Felds auf das gefilterte QuerySet:
form.fields["base_rate"].queryset = Rate.objects.filter(company_id=the_company.id)
Nach dem Login kopieren

Dieser Abfragesatz stellt sicher, dass nur Tarife, die sich auf das ausgewählte Unternehmen beziehen, als Auswahl im Formular verfügbar sind.

Django 0.96 Hack

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.

ModelChoiceField Queryset

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage