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 Rates
ve aralığına sahip çoklu vardır Clients
. Her birinin diğerinden değil, üst öğesinden seçilen Client
bir tabanı olmalıdır .Rate
Company's Rates
Company's Rates
A eklemek için bir form oluştururken Client
, Company
seçenekleri kaldırmak istiyorum (zaten bir "Müşteri Ekle" düğmesiyle seçildiğinden Company
) ve Rate
seçenekleri de bununla sınırlamak istiyorum Company
.
Bu konuda Django 1.0 nasıl giderim?
Şu anki forms.py
dosyam ş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.py
aynı 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_to
umut verici gözüküyor ama nasıl geçeceğimi bilmiyorum the_company.id
ve 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.)