Diyelim ki benim içinde aşağıdakiler var 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)
Yani Companies, her biri bir Ratesve aralığına sahip çoklu vardır Clients. Her birinin diğerinden değil, üst öğesinden seçilen Clientbir tabanı olmalıdır .RateCompany's RatesCompany's Rates
A eklemek için bir form oluştururken Client, Companyseçenekleri kaldırmak istiyorum (zaten bir "Müşteri Ekle" düğmesiyle seçildiğinden Company) ve Rateseçenekleri de bununla sınırlamak istiyorum Company.
Bu konuda Django 1.0 nasıl giderim?
Şu anki forms.pydosyam şu anda sadece kaynak olarak görünüyor:
from models import *
from django.forms import ModelForm
class ClientForm(ModelForm):
class Meta:
model = Client
Ve views.pyaynı zamanda temel:
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'da şablonu oluşturmadan önce aşağıdakine benzer bir şey yaparak bunu hackleyebildim:
manipulator.fields[0].choices = [(r.id,r.name) for r in Rate.objects.filter(company_id=the_company.id)]
ForeignKey.limit_choices_toumut verici gözüküyor ama nasıl geçeceğimi bilmiyorum the_company.idve bunun zaten Yönetici arayüzü dışında çalışıp çalışmayacağı belli değil.
Teşekkürler. (Bu oldukça basit bir istek gibi görünüyor, ancak bir şeyi yeniden tasarlamam gerekirse önerilere açığım.)