Python Django表单缓存填充表单

Python Django表单缓存填充表单,python,django,Python,Django,我在django中填充表单的选项 问题是,当我在浏览器中看到它时,根据数据库,年份列表是正常的,但当我更改数据库中的某个日期时,年份选择列表不会更新 class PlanForm(forms.Form): def get_prices(): return forms.ChoiceField( choices=map( lambda x: ( x.pk,

我在django中填充表单的选项

问题是,当我在浏览器中看到它时,根据数据库,年份列表是正常的,但当我更改数据库中的某个日期时,年份选择列表不会更新

class PlanForm(forms.Form):

    def get_prices():
        return forms.ChoiceField(
            choices=map(
                lambda x: (
                    x.pk, 
                    (
                        unicode(x.length) 
                        + _(' Day Listing / ') 
                        + unicode(x.pics) 
                        + _(' Photos: ') 
                        + _('$ ') 
                        + unicode(x.price)
                    ),
                ),
                Pricing.objects.filter(
                    enable=True,
                    site=settings.SITE_ID,
                ),
            ),
            label=_('Plans'),
            widget=forms.RadioSelect
        )

    def get_options():
        return forms.MultipleChoiceField(
            choices=map(
                lambda x: (
                    x.pk, 
                    (
                        unicode(x) 
                        + _(' : $') 
                        + unicode(x.price)
                    ),
                ),
                PricingOptions.objects.filter(
                    enable=True,
                    site=settings.SITE_ID,
                )
            ),
            label=_('Ads Options'),
            widget=forms.CheckboxSelectMultiple,
            required=False
        )

    def __init__(self, *args, **kwargs):
        print 'passou no init'
        super(PlanForm, self).__init__(*args, **kwargs)
        self.fields['pricing'] = self.get_prices()
        self.fields['pricing_options'] = self.get_options()


    pricing = get_prices()
    pricing_options = get_options()
我尝试了这个代码,但是我得到了错误

get_prices()不接受任何参数(给定1个)

如何解决此问题?

类方法(例如,
get\u prices
)至少需要一个参数
self
,该参数由调用该方法的类实例填充

将decorator添加到方法中。Python默认假定函数在类中被定义为方法,并将“self”作为第一个参数传递<代码>静态方法阻止此默认行为

class PlanForm(forms.Form):

    @staticmethod
    def get_prices():
        return forms.ChoiceField(choices=map(lambda x: (x.pk, unicode(x.length) + _(' Day Listing / ') + unicode(x.pics) +  _(' Photos: ') + _('$ ') + unicode(x.price)  ), Pricing.objects.filter(enable=True,site=settings.SITE_ID)),label=_('Plans'), widget=forms.RadioSelect)

    @staticmethod
    def get_options():
        return forms.MultipleChoiceField(choices=map(lambda x: (x.pk, unicode(x) + _(' : $') + unicode(x.price)), PricingOptions.objects.filter(enable=True,site=settings.SITE_ID)),label=_('Ads Options'), widget=forms.CheckboxSelectMultiple, required=False)

    def __init__(self, *args, **kwargs):
        print 'passou no init'
        super(PlanForm, self).__init__(*args, **kwargs)
        self.fields['pricing'] = self.get_prices()
        self.fields['pricing_options'] = self.get_options()


    pricing = get_prices()
    pricing_options = get_options()
试试看:

class PlanForm(forms.Form):

    def __init__(self, *args, **kwargs):
        print 'passou no init'
        super(PlanForm, self).__init__(*args, **kwargs)
        self.fields['pricing'] = forms.ChoiceField(choices=map(lambda x: (x.pk, unicode(x.length) + _(' Day Listing / ') + unicode(x.pics) +  _(' Photos: ') + _('$ ') + unicode(x.price)  ), Pricing.objects.filter(enable=True,site=settings.SITE_ID)),label=_('Plans'), widget=forms.RadioSelect)
        self.fields['pricing_options'] =  forms.MultipleChoiceField(choices=map(lambda x: (x.pk, unicode(x) + _(' : $') + unicode(x.price)), PricingOptions.objects.filter(enable=True,site=settings.SITE_ID)),label=_('Ads Options'), widget=forms.CheckboxSelectMultiple, required=False)

工作,但会在init中调用get_prices方法吗?