我想做的是这样的事情:
1)我创建了模型
class Example(models.Model):
username = models.CharField(max_lenght=111)
pass = models.CharField(max_lenght=111)
2)我使用ModelForm创建了表单,并添加了一个额外的字段
class ExampleForm(ModelForm):
extra_field= form.CharField(max_length=333)
class Meta:
model = Client
fields = ['username', 'pass']
3)我已创建视图来处理此表单
class Registration(CreateView):
"""
View handles user registration.
"""
form_class = ExampleForm
model = Example
template_name = 'accounts/registration.html'
success_url = reverse_lazy('accounts:registered')
现在我想做的是对extra_field进行一些自定义处理。我想出这应该在ExampleForm的save方法中完成。例如:
def save(self, commit=True):
user = super(ExampleForm, self).save(commit=False)
data = self.cleaned_data['extra_field']
user.set_password(self.cleaned_data['pass'] + self.cleaned_data['extra_field'])
if commit:
user.save()
return user
但这不起作用。 这是处理这种情况的正确方法,还是有更好的方法? 最大的问题是这不是我的代码,所以我应该只更改ExampleForm。 有办法做到这一点吗?
提前致谢。
最诚挚的问候, 尼古拉
答案 0 :(得分:1)
您可以使用form_valid()
的{{1}}方法执行此操作。
CreateView