Auswahl von Fremdschlüsseln in einer Django-Modellform filtern
Angenommen, Sie haben die folgenden Modelle definiert:
class Company(models.Model): name = ... class Rate(models.Model): company = models.ForeignKey(Company) name = ... class Client(models.Model): name = ... company = models.ForeignKey(Company) base_rate = models.ForeignKey(Rate)
Das Ziel besteht darin, sicherzustellen, dass beim Erstellen eines Kunden die verfügbaren Tarifoptionen auf diejenigen innerhalb der Muttergesellschaft beschränkt sind.
In die Datei „forms.py“ von Django 1.0:
from models import * from django.forms import ModelForm class ClientForm(ModelForm): class Meta: model = Client def __init__(self, company_id, *args, **kwargs): '''Filter the rate choices to only include those for the specified company''' super(ClientForm, self).__init__(*args, **kwargs) self.fields['base_rate'].queryset = Rate.objects.filter(company_id=company_id)
In der Datei „views.py“:
from django.shortcuts import render_to_response, get_object_or_404 from models import * from forms import * def addclient(request, company_id): the_company = get_object_or_404(Company,>
Durch Filtern des QuerySet, das dem Feld „Rate“ zugewiesen ist, werden die verfügbaren Auswahlmöglichkeiten für „ base_rate' ForeignKey sind auf die entsprechenden Tarife innerhalb des angegebenen Unternehmens beschränkt.
Das obige ist der detaillierte Inhalt vonWie filtere ich ForeignKey-Auswahlmöglichkeiten in einem Django ModelForm basierend auf der Muttergesellschaft?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!