2014-02-11 1 views
0

я мои модели определяется как:Джанго AbstractUsers create_user не работает должным образом

class MyUser(AbstractUser): 
    created = models.DateTimeField(auto_now_add=True) 
    name = models.CharField(max_length=256) 
    phone = models.IntegerField() 

    USERNAME_FIELD = 'email' 
    REQUIRED_FIELDS = ['username', 'name', 'phone'] 

MyUser._meta.get_field_by_name('email')[0]._unique=True 

теперь, когда я звоню CREATE_USER, посылая все аргументы в виде мой view.py выглядит

def new_user(request): 
    email = request.POST.get('email','') 
    phone = request.POST.get('phone','') 
    name = request.POST.get('name','') 
    password = request.POST.get('password','') 
    confirm_pass = request.POST.get('confirm_password','') 
    if password and confirm_pass and password == confirm_pass: 
     try: 
      user = MyUser.objects.get(email=email) 
     except MyUser.DoesNotExist: 
      user = None 
     if user: 
      message = 'User with the following email id already exists' 
      return render(request, 'signup.html', {'message':message}) 
     else: 
      user = My.objects.create_user(email, email, name, phone, password) 
      user.save() 
      login(request, user) 
      return render(request, 'details.html', {'username':request.user.username}) 
    else: 
     message = 'Paaswords does not match each other' 
    return render(request, 'signup.html', {'message':message}) 

Теперь каждый раз, когда эта функция выполняет это, я вижу следующую ошибку:

create_user() берет на себя st 4 аргумента (6 данных)

Я не мог понять, почему create_user не работает.

ответ

0

функция create_user принимает параметры, как * аргументы, так что вам нужно вызвать функцию так:

create_user(email = email, name = name, phone = phone, password = password) 

или легко проходить request.POST:

create_user(request.POST) 

Я вижу, что ваш взгляд немного сложный, вы когда-нибудь пробовали Class Based Views? С помощью представлений на основе классов вы можете создавать методы, которые имеют дело с получением запросов и рендерингом формы. Что посмотреть https://docs.djangoproject.com/en/dev/topics/class-based-views/

В последний совет, вы можете создать register_form иметь дело с проверкой данных: https://docs.djangoproject.com/en/dev/topics/forms/

0

вы отправляете 6 аргументы из вашего views.py, где, как у вас есть только 4 требуется. Обратите внимание, что пароль и подтверждение пароля считаются двумя дополнительными аргументами. Это то, что я думаю в любом случае

Взгляните на пример THIS. Это помогло мне создать моего абстрактного пользователя.

Если вы хотите некоторые примеры кода, HERE хороший пробой (если вы на Django 1.5, есть)

+0

есть 5 полей, которые я посылаю первую электронную почту, как электронная почта, второй адрес электронной почты в качестве имени пользователя, третье имя как имя, четвертое, как телефон, и последнее как пароль, я имею в виду, что я просто отправляю все обязательные поля – saurabh

+0

, приведенные вами примеры предназначены для abstractbaseuser и моего в abstractuser – saurabh

Смежные вопросы