0

私はしばらくの間、Django フォーム検証と戦っています。私はかなり基本的なコードを使用しています。ajaxリクエストを使用してフォームデータを返すことは唯一の特別なことですが、ここで私の問題の原因ではないと思います. ユーザーエントリを更新しようとしています。ユーザーのインスタンスを作成し、そのインスタンスを CreateForm() にフィードしますが、それでもユーザー名の重複エラーが発生します。

ビューの一部を次に示します。

def user_update(request):
    if request.is_ajax():
        print request.POST
        user = User.objects.get(pk=int(request.POST['pk']))
        print user
        form = UserCreateForm(request.POST, instance=user)
        print form
        if form.is_valid():
            form_cleaned = form.cleaned_data
        else:
            print '### form is invalid ###'
            print form.error_messages

の出力request.POSTは次のとおりです。

<QueryDict: {u'username': [u'testuser'], u'password1': [u'test'], u'password2': [u'test'], u'pk': [u'27'], u'csrfmiddlewaretoken': [u'wyBoaBAlxLTO952BzWSxR7HMK6W7nsAM'], u'email': [u'soso@soso.so']}>

の出力print userは次のとおりです。

testuser

ではprint form、常にユーザー名の重複エラーが発生するため、フォームは常に無効です。

ヒントをください。よろしくお願いします。

4

3 に答える 3

0

には次のコードがありますUserCreationFormclean_username()

User._default_manager.get(username=username)

これが成功すると、エラーが発生します。ユーザー ( admin) が既に存在するため、常にエラーが発生します。@sudipta が示唆しているように、UserChangeForm.

IMHO、ストックフォームを使用するのではなく、独自の動作を使用して独自のカスタムフォームを定義し、元の目的から逸脱することができます。

于 2013-09-18T14:59:15.157 に答える