0

私がやろうとしていることは、次のようなものです。

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 のみを変更する必要があります。これを行う方法はありますか?

前もって感謝します。

宜しくお願いします、ニコラ

4

1 に答える 1