Comment filtrer les choix de clés étrangères dans un modèle Django basé sur la société mère ?

Susan Sarandon
Libérer: 2024-11-25 12:57:11
original
835 Les gens l'ont consulté

How to Filter ForeignKey Choices in a Django ModelForm Based on Parent Company?

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)
Copier après la connexion

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)
Copier après la connexion

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,>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal