私がやろうとしていることは、次のようなものです。
1) モデルを作成しました
class Example(models.Model):
username = models.CharField(max_lenght=111)
pass = models.CharField(max_lenght=111)
2) ModelForm を使用してフォームを作成し、フィールドを 1 つ追加しました
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 のみを変更する必要があります。これを行う方法はありますか?
前もって感謝します。
宜しくお願いします、ニコラ