Dites que j'ai ce qui suit dans mon 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)
C'est-à-dire qu'il y en a plusieurs Companies, chacun ayant une plage de Rateset Clients. Chacun Clientdoit avoir une base Ratechoisie parmi ses parents Company's Rates, pas une autre Company's Rates.
Lors de la création d'un formulaire pour ajouter un Client, je voudrais supprimer les Companychoix (car cela a déjà été sélectionné via un bouton "Ajouter un client" sur la Companypage) et limiter les Ratechoix à cela Companyégalement.
Comment procéder à ce sujet dans Django 1.0?
Mon forms.pydossier actuel est juste passe-partout pour le moment:
from models import *
from django.forms import ModelForm
class ClientForm(ModelForm):
    class Meta:
        model = Client
Et views.pyc'est aussi basique:
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})
Dans Django 0.96, j'ai pu pirater cela en faisant quelque chose comme ceci avant de rendre le modèle:
manipulator.fields[0].choices = [(r.id,r.name) for r in Rate.objects.filter(company_id=the_company.id)]ForeignKey.limit_choices_tosemble prometteur mais je ne sais pas comment passer the_company.idet je ne sais pas si cela fonctionnera de toute façon en dehors de l'interface d'administration.
Merci. (Cela semble être une demande assez basique mais si je devais repenser quelque chose, je suis ouvert aux suggestions.)