SORU
15 Kasım 2008, CUMARTESİ


Django nasıl bir ModelForm içinde ForeignKey seçimler süzgeç?

models.py benim: şu var ki

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)

I. e. birden fazla Companies, Rates Clients bir dizi olan her vardır. Her Client ana dan seçilen 11* *bir baz olması gerekir Company's Rates, Company's Rates.

Ne zaman oluşturmak için bir form ekleme Client etmek istiyorum çıkarın Company seçenek (o zaten seçili üzerinden bir "Müşteri Ekle" düğmesi üzerinde Company sayfa) ve sınır Rate seçimler Company de.

Nasıl Django 1.0 bunun için ne yapmam lazım?

forms.py benim şu anki dosya şu anda demirbaş:

from models import *
from django.forms import ModelForm

class ClientForm(ModelForm):
    class Meta:
        model = Client

Ve views.py de 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 bu şablon oluşturma işleminden önce aşağıdaki gibi bir şey yaparak kesmek için başardı:

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örünüyor ama the_company.id geçmek nasıl bilmiyorum ve eğer Yönetici arayüzü dışarıda bir şekilde çalışacaktır eğer emin değilim.

Teşekkürler. (Bu çok basit bir istek gibi görünüyor ama eğer yeniden bir şey olursa önerilere açığım.)

CEVAP
15 Kasım 2008, CUMARTESİ


ForeignKey django ile temsil edilir.formlar.Model QuerySet olan bir ChoiceField olan ModelChoiceField,. ModelChoiceField başvurusu.

Sahada bir QuerySet sağlamak queryset öznitelik. Formunuzu nasıl inşa edildiğini bağlıdır. Eğer açık bir form oluşturmak, alanları doğrudan adında olacak.

form.rate.queryset = Rate.objects.filter(company_id=the_company.id)

Eğer varsayılan ModelForm nesne alırsan, form.fields["rate"].queryset = ...

Bu açıkça görünümünde yapılır. Hayır hack.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DancingIsAPassion

    DancingIsAPa

    29 AĞUSTOS 2009
  • DroidModderX ROOT Master

    DroidModderX

    14 ŞUBAT 2011
  • Rootjunky.com

    Rootjunky.co

    22 EKİM 2011