【发布时间】:2014-06-19 17:51:18
【问题描述】:
我正在使用 Django 表单进行用户注册,用户可以在其中输入优惠券代码。我希望在优惠券代码字段中输入的所有字符都转换为小写。我尝试在保存方法、自定义清理方法和自定义验证器中使用 .lower() ,但这些方法没有运气。下面是我的代码。
class StripeSubscriptionSignupForm(forms.Form):
coupon = forms.CharField(max_length=30,
required=False,
validators=[validate_coupon],
label=mark_safe("<p class='signup_label'>Promo Code</p>")
def save(self, user):
try:
customer, created = Customer.get_or_create(user)
customer.update_card(self.cleaned_data["stripe_token"])
customer.subscribe(self.cleaned_data["plan"], self.cleaned_data["coupon"].lower())
except stripe.StripeError as e:
# handle error here
raise e
如上所述,我也尝试了一种清洁方法,但这也不起作用:
def clean_coupon(self):
return self.cleaned_data['coupon'].lower()
【问题讨论】:
-
实际上,
forms.Form没有任何名为save的方法。所以请改用ModelForm或在视图中保存优惠券。 -
@ruddra: 你确定 forms.form 没有
save方法吗? -
我是。您可以在 Django 源代码中检查自己。
-
@ruddra... 有趣,但保存方法的其余部分在我的 StripeSubscriptionSignupForm 类中工作(除了 .lower() 代码)。
-
我检查了,保存应该可以工作,因为你创建了这个方法,而不是覆盖任何东西。
标签: python django python-2.7