Katakanlah saya memiliki yang berikut ini di 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)
Yaitu ada beberapa Companies, masing-masing memiliki kisaran Ratesdan Clients. Masing Client- masing harus memiliki basis Rateyang dipilih dari orang tuanya Company's Rates, bukan yang lain Company's Rates.
Saat membuat formulir untuk menambahkan Client, saya ingin menghapus Companypilihan (seperti yang telah dipilih melalui tombol "Tambah Klien" pada Companyhalaman) dan batasi Ratepilihan itu Companyjuga.
Bagaimana saya melakukannya tentang Django 1.0?
forms.pyFile saya saat ini hanyalah boilerplate saat ini:
from models import *
from django.forms import ModelForm
class ClientForm(ModelForm):
class Meta:
model = Client
Dan views.pyitu juga dasar:
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})
Di Django 0.96 saya bisa meretas ini dengan melakukan sesuatu seperti berikut sebelum merender template:
manipulator.fields[0].choices = [(r.id,r.name) for r in Rate.objects.filter(company_id=the_company.id)]
ForeignKey.limit_choices_totampaknya menjanjikan tetapi saya tidak tahu bagaimana cara masuk the_company.iddan saya tidak jelas apakah itu akan bekerja di luar antarmuka Admin.
Terima kasih. (Ini sepertinya permintaan yang cukup mendasar tetapi jika saya harus mendesain ulang sesuatu, saya terbuka untuk saran.)