कहो मैं अपने में निम्नलिखित है 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
और मैं स्पष्ट नहीं हूं कि क्या यह वैसे भी व्यवस्थापक इंटरफ़ेस के बाहर काम करेगा।
धन्यवाद। (यह एक बहुत ही बुनियादी अनुरोध की तरह लगता है, लेकिन अगर मुझे सुझाव के लिए खुले हुए कुछ को फिर से डिज़ाइन करना चाहिए।)