【问题标题】:AttributeError: module 'django.contrib.auth' has no attribute 'models'. what am I missing?AttributeError:模块“django.contrib.auth”没有属性“模型”。我错过了什么?
【发布时间】:2020-03-22 18:23:36
【问题描述】:

当我在 django 中运行迁移时,终端显示 AttributeError: module 'django.contrib.auth' has no attribute 'models'。我在 django 1.1 中进行讲座,我实际上使用的是 django 2.2。

views.py

def calicutpara(request):
    return render(request, 'calicutpara.html')

class signup(CreateView):
    form_class = forms.userCreateForm
    success_url = reverse_lazy('login')
    template_name = 'signup.html'

应用 urls.py

from django.conf.urls import url
from django.contrib.auth import views as auth_views
from django.urls import path
from . import views
app_name = 'login'

urlpatterns = [
    path('ktupage/', views.ktupage, name='ktupage'),
    path('mgcourses/', views.mgcourses, name='mgcourses'),
    path('calicutcourses/', views.calicutcourses, name='calicutcourses'),
    path('mgcourses/mgaas/', views.mgaas, name='mgaas'),
    path('mgcourses/mgpara/', views.mgpara, name='mgpara'),
    path('calicutcourses/calicutaas/', views.calicutaas, name='calicutaas'),
    path('calicutcourses/calicutpara/', views.calicutpara, name='calicutpara'),
    path('login/', auth_views.LoginView.as_view(template_name='login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(),name='logout'),
    path('signup/', views.signup.as_view(),name='signup'),
]

models.py

from django.db import models
from django.contrib import auth

class User(auth.models.User,auth.models.PermissionsMixin):

  def __str__(self):
      return "@{}".format(self.username)

forms.py

from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm

class userCreateForm(UserCreationForm):

    class Meta:
        fields = ('username', 'email', 'password1', 'password2')
        model = get_user_model()

    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.fields['username'].label = 'Username'
        self.fields['email'].label = 'E-mail Address'

【问题讨论】:

  • 你不应该这样做。你应该从 AbstractUser 继承,而不是 User,否则你会得到一个额外的 db 表。并确保将 AUTH_USER_MODEL 设置为“yourapp.User”。
  • 你能解释一下我应该做些什么改变来让它正确。 settings.py 中的 AUTH_USER_MODEL?
  • 我说:继承自 AbstractUser,而不是 User。

标签: django python-3.x django-models


【解决方案1】:

在models.py中,替换:

from django.db import models
from django.contrib import auth

from django.contrib.auth import models

【讨论】:

    猜你喜欢
    • 2019-07-20
    • 2010-10-02
    • 2021-12-30
    • 2020-01-01
    • 2018-04-14
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多