0

私のModels.py、ここではOneToOneFieldを使用して、StudentProfileを拡張しています。

from django.db import models 
from django.contrib.auth.models import User, UserManager


class SecretQuestion(models.Model):
    question = models.CharField(max_length=200)
    def __unicode__(self):
        return self.question


class StudentProfile(models.Model):
    user = models.OneToOneField(User)
    batch = models.CharField(max_length=10)
    course = models.CharField(max_length=20)
    date_of_birth = models.DateField()
    secret_question = models.ForeignKey(SecretQuestion)
    answer = models.CharField(max_length=20)
    contact = models.CharField(max_length=20)

そして、私の登録ビューでは、新しいユーザーmain_userを作成し、それを使用して学生プロフィールを作成しています:-

def register_page(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            main_user = User.objects.create_user(
              username= form.cleaned_data['username'],
              password = form.cleaned_data['password1'],
             )
            user = StudentProfile.objects.create(               
                user_id = main_user.id,http://stackoverflow.com/questions/ask
                batch=form.cleaned_data['batch'],
                course=form.cleaned_data['course'],
                date_of_birth=form.cleaned_data['date_of_birth'],
                secret_question=form.cleaned_data['secret_question'],
                answer=form.cleaned_data['answer'],
                contact=form.cleaned_data['contact']
              )
        return HttpResponseRedirect('/register/success/')
    else:
       form = RegistrationForm()

   variables = RequestContext(request, {'form': form})
   return render_to_response('registration/register.html',variables)

Djangoに登録した後、私は取得しています、

FieldError at /register/

Cannot resolve keyword 'username' into field. Choices are: answer, batch, contact, course, date_of_birth, id, secret_question, user

これは、登録フィールドに入力して登録ボタンを押した後に発生します。このエラーを解釈することはできません。これは何を意味するのでしょうか?

4

2 に答える 2

1

ジャンゴ登録フォームへの追加フィールドの追加RegistrationFormで説明されているようにサブクラス化する必要があります


User.objects.create_userには、という名前のキーワード引数がありませんusername。ユーザー名は最初の位置引数でなければなりません:

        main_user = User.objects.create_user(form.cleaned_data['username'],
          password = form.cleaned_data['password1'],
         )

今後は、少なくともエラーが発生した行番号を含めてください。

于 2012-04-10T02:07:12.740 に答える
0

現在のコードでは、このエラーは発生しません。

このエラーは、モデルに応じたフィールドを持たないクラスusernameへのキーワード引数でフィルタリングしていることを示しています。StudentProfileusername

エラーは、コードが壊れている行をリストし、これがどこで起こっているかを正確に教えてくれるはずです - そこに答えがあります。あなたのコード?Django 登録コード? 投稿するまでわかりません。

参考までに、無効なフィールドでモデルをフィルタリングしようとすると、このエラーが表示されます。

MyModel.objects.filter(non_existent_field=True) # would throw this error.

に無効なフィールドを渡すcreateと、TypeError

于 2012-04-10T04:30:08.880 に答える