내 안에 다음이 있다고 가정 해보십시오 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 ModelForm
class ClientForm(ModelForm):
class Meta:
model = Client
그리고 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, 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
어쨌든 관리 인터페이스 외부에서 작동하는지 확실하지 않습니다.
감사. (이것은 꽤 기본적인 요청처럼 보이지만 무언가를 다시 디자인해야한다면 제안에 개방적입니다.)