2016-07-10 2 views
1

Джанго выдает сообщение об ошибкеDjango1.9: 'функция' объект не имеет атрибута '_meta'

forms.py:

from django import forms 
from django.contrib.auth import authenticate, get_user_model, login, logout 
from django.contrib.auth.forms import UserCreationForm 

User = get_user_model 


class UserLoginForm(forms.Form): 
    username = forms.CharField() 
    password = forms.CharField(widget=forms.PasswordInput) 

    def clean(self, *args, **kwargs): 
     username = self.cleaned_data.get("username") 
     password = self.cleaned_data.get("password") 
     user = authenticate(username=username, password=password) 
     #user_qs = User.objects.filter(username=username) 
     #if user_qs.count() == 1: 
     # user = user_qs.first() 
     if username and password: 
      user = authenticate(username=username, password=password) 
      if not user: 
       raise forms.ValidationError("This user does not exist.") 
      if not user.check_password(password): 
       raise forms.ValidationError("Incorrect password.") 
      if not user.is_active: 
       raise forms.ValidationError("User is not active.") 
     return super(UserLoginForm, self).clean(*args, **kwargs) 


class InceptionForm(forms.ModelForm): 
    email2 = forms.EmailField(label='Confirm Email') 
    class Meta: 
     model = User 
     fields = ('username', 'email', 'password1', 'password2') 

ошибка происходит из-за класса InceptionForm().

Ошибка:

AttributeError: 'функция' объект не имеет атрибута '_meta'

ответ

4

Вы установите пользователь равного функцииget_user_model. Вам необходимо установить его на результат вызова этой функции:

User = get_user_model()