我的表单带有一个电子邮件输入和两个提交按钮来订阅和取消订阅时事通讯:
<form action="" method="post"> {{ form_newsletter }} <input type="submit" name="newsletter_sub" value="Subscribe" /> <input type="submit" name="newsletter_unsub" value="Unsubscribe" /> </form>
我也有班级形式:
class NewsletterForm(forms.ModelForm): class Meta: model = Newsletter fields = ('email',)
我必须编写自己的 clean_email 方法,并且我需要知道表单是通过哪个按钮提交的。但是提交按钮的值不在self.cleaned_data字典中。否则我可以得到按钮的值吗?
self.cleaned_data
您可以在验证前使用self.datainclean_email方法访问 POST 数据。它应该包含一个名为newsletter_sub或newsletter_unsub取决于按下哪个按钮的键。
self.data
clean_email
newsletter_sub
newsletter_unsub
# in the context of a django.forms form def clean(self): if 'newsletter_sub' in self.data: # do subscribe elif 'newsletter_unsub' in self.data: # do unsubscribe