Filtrage des choix de clés étrangères dans un formulaire de modèle Django
Supposons que vous ayez défini les modèles suivants :
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)
L'objectif est de s'assurer que lors de la création d'un client, les choix de tarifs disponibles soient limités à ceux au sein de la société mère.
Dans le fichier Forms.py de 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)
Dans le view.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,>
En filtrant le QuerySet affecté au champ 'rate', les choix disponibles pour le ' base_rate' ForeignKey sont limités aux tarifs appropriés au sein de la société spécifiée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!