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 サイトの他の関連記事を参照してください。