为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Django ModelForm中筛选ForeignKey选项?

如何在Django ModelForm中筛选ForeignKey选项?

呼唤远方 2019-07-08 15:47:25
如何在Django ModelForm中筛选ForeignKey选项?假设我在我的models.py: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)也就是说有多个Companies,每个Rates和Clients..各Client应该有一个基地Rate它是从它的父母中选择的Company's Rates,而不是另一个Company's Rates.创建用于添加Client,我想移除Company选项(因为已经通过“添加客户端”按钮在Company页)并限制Rate对此的选择Company也是。如何在Django 1.0中实现这一点?我的电流forms.py文件目前只是样板:from models import *from django.forms import ModelFormclass ClientForm(ModelForm):     class Meta:         model = Client而views.py也是基本的:from django.shortcuts import render_to_response, get_object_or_404from models import *from forms import *def addclient(request, company_id):     the_company = get_object_or_404(Company, id=company_id)     if request.POST:         form = ClientForm(request.POST)         if form.is_valid():             form.save()             return HttpResponseRedirect(the_company.get_clients_url())     else:         form = ClientForm()     return render_to_response('addclient.html', {'form': form, 'the_company':the_company})在Django 0.96中,我能够在呈现模板之前执行如下操作:manipulator.fields[0].choices = [(r.id,r.name) for r in Rate.objects.filter(company_id=the_company.id)]ForeignKey.limit_choices_to看上去很有希望,但我不知道怎么进去the_company.id我不清楚这是否会在Admin界面之外起作用。谢谢。(这似乎是一个非常基本的要求,但如果我要重新设计一些东西,我愿意接受建议。)
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 2253 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信