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