SORU
8 Mart 2009, Pazar


Django Geçen Özel Formset Parametreleri Formu

Bu gibi görünüyor Django bir Form var:

class ServiceForm(forms.Form):
    option = forms.ModelChoiceField(queryset=ServiceOption.objects.none())
    rate = forms.DecimalField(widget=custom_widgets.SmallField())
    units = forms.IntegerField(min_value=1, widget=custom_widgets.SmallField())

    def __init__(self, *args, **kwargs):
        affiliate = kwargs.pop('affiliate')
        super(ServiceForm, self).__init__(*args, **kwargs)
        self.fields["option"].queryset = ServiceOption.objects.filter(affiliate=affiliate)

Böyle bir şey bu formu diyorum:

form = ServiceForm(affiliate=request.affiliate)

request.affiliate oturum açan kullanıcının adıdır. Bu beklendiği gibi çalışır.

Benim sorunum şimdi bir formset bu tek bir form açmak istiyorum. Bir türlü çözemiyorum ne formset oluştururken bireysel formları için Ortaklık bilgi aktarmak istiyorum. Bunun dışında bir formset yapmak doktorlara göre böyle bir şey yapmak istiyorum:

ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3)

Ve sonra bu gibi oluşturmak istiyorum:

formset = ServiceFormSet()

Şimdi nasıl ortaklık pass=talep edebilir miyim.bireysel formları bu şekilde bağlı?

CEVAP
8 Mart 2009, Pazar


functools.partial functools.wraps kullanırdım:

from functools import partial, wraps
from django.forms.formsets import formset_factory

ServiceFormSet = formset_factory(wraps(ServiceForm)(partial(ServiceForm, affiliate=request.affiliate)), extra=3)

Bu en temiz yol olduğu ve herhangi bir şekilde ServiceForm (yani zor alt yaparak) etkilemez bence.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • Kyler Briskey

    Kyler Briske

    20 ŞUBAT 2011
  • RaquelGamesBR

    RaquelGamesB

    20 HAZİRAN 2009