ホームページ > バックエンド開発 > Python チュートリアル > 親会社に基づいて Django ModelForm のForeignKey の選択肢をフィルタリングする方法は?

親会社に基づいて Django ModelForm のForeignKey の選択肢をフィルタリングする方法は?

Susan Sarandon
リリース: 2024-11-25 12:57:11
オリジナル
906 人が閲覧しました

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

Django ModelForm でのForeignKey Choicesのフィルタリング

次のモデルが定義されているとします。

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)
ログイン後にコピー

目標クライアントの作成時に、利用可能なレートの選択肢が親内のレートに限定されるようにするためです。 company.

Django 1.0 の Forms.py ファイル内:

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)
ログイン後にコピー

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,>
ログイン後にコピー

「レート」に割り当てられた QuerySet をフィルタリングすることによって' フィールドでは、「base_rate」ForeignKey で利用可能な選択肢は、指定された会社内の適切なレートに制限されます。

以上が親会社に基づいて Django ModelForm のForeignKey の選択肢をフィルタリングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート