代码之家  ›  专栏  ›  技术社区  ›  Ibraheem Kolawole

有没有最好的方法来创建自定义用户模型并扩展到配置文件以在django中进行生产?因为我在生产中不断遇到这些错误

  •  2
  • Ibraheem Kolawole  · 技术社区  · 7 年前

    大家好,请强调一下将自定义用户模型扩展到配置文件的最佳方法,或者解释一下我做错了什么。我创建了一个自定义用户模型,并将其扩展到一个profile应用程序,该应用程序运行良好,并在开发过程中通过。然而,在heroku的生产中,当我点击profile时,我不断遇到服务器错误,所以我将debug设置为True,它看到了这个回溯;

    ProgrammingError at /u/profile/
    can't adapt type 'MyUser'
    

    所以我想,嘿,它可能在抱怨传递整个模型,而不是模型中的对象。但是,我的视图中的过滤器指定检索到的对象是与请求的用户相关的对象。以下是我的观点:

    User = get_user_model()
    
    class ProfileUserView(View):
        def get(self, request, *args, **kwargs):
            if request.user.is_authenticated():
               user = get_object_or_404(User, username=request.user)
               post_list = Post.objects.filter(author__username__iexact=user).order_by('-submission_time')
               paginator = Paginator(post_list, 10)
               page = request.GET.get('page')
    
               try:
                    post = paginator.page(page)
               except PageNotAnInteger:
                    post = paginator.page(1)
               except EmptyPage:
                    post = paginator.page(paginator.num_pages)
               profile = Profile.objects.get(user=request.user)
               template = 'profiles/profile_user.html'
               context = {
                        'profile': profile,
                        'post': post
                       }
               return render(request, template, context)
            else:
               return HttpResponseRedirect(reverse('account_login'))
    

    如果我通过扩展自定义用户模型从概要文件模型中检索相关数据时出现了什么错误,请提供任何帮助/解释,我们将不胜感激。

    这是剖面模型块;

    class Profile(models.Model):
        user = models.OneToOneField(User)
        image = models.ImageField(upload_to='images/', null=True, blank=True)
        rank = models.CharField(max_length=50, default="Beginner")
    

    请求方法:GET 请求URL: https://sustenergy.herokuapp.com/u/profile/

    回溯:

    validate\u number中的文件“/app/.heroku/python/lib/python3.6/site packages/django/core/paginator.py”

    在处理上述异常(int()参数必须是字符串、类似字节的对象或数字,而不是“NoneType”)的过程中,发生了另一个异常:

    get中的文件“/app/profiles/views.py” 37.post=paginator.page(第页)

    文件“/app/.heroku/python/lib/python3.6/site-packages/django/core/paginator.py”,第页 57.number=self.validate\u number(number)

    validate\u number中的文件“/app/.heroku/python/lib/python3.6/site packages/django/core/paginator.py”

    在处理上述异常(页码不是整数)的过程中,发生了另一个异常:

    返回self.cursor。执行(sql,参数)

    上述异常(无法适应类型“MyUser”)是以下异常的直接原因:

    文件“/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py” 41.response=get_response(请求)

    get\u响应中的文件“/app/.heroku/python/lib/python3.6/site packages/django/core/handlers/base.py”

    get\u响应中的文件“/app/.heroku/python/lib/python3.6/site packages/django/core/handlers/base.py” 响应=包装的回调(请求,*回调参数,**回调参数)

    文件“/app/.heroku/python/lib/python3.6/site-packages/django/views/generic/base.py” 68、回归自我。调度(请求,*args,**kwargs)

    返回处理程序(请求、*参数、**kwargs)

    get中的文件“/app/profiles/views.py”

    文件“/app/.heroku/python/lib/python3.6/site-packages/django/core/paginator.py”,第页 57.number=self.validate\u number(number)

    46、如果数量>;self.num_页面:

    文件“/app/.heroku/python/lib/python3.6/site-packages/django/utils/functional.py” 35.res=实例。 字典 [self.name]=self.func(实例)

    91.if self。计数==0且非self.allow\u empty\u first\u页面:

    收到 35.res=实例。

    count中的文件“/app/.heroku/python/lib/python3.6/site packages/django/core/paginator.py” 79.return self.object\u list.count()

    count中的文件“/app/.heroku/python/lib/python3.6/site packages/django/db/models/query.py”

    get\u count中的文件“/app/.heroku/python/lib/python3.6/site packages/django/db/models/sql/query.py”

    get\u聚合中的文件“/app/.heroku/python/lib/python3.6/site packages/django/db/models/sql/query.py”

    execute\U sql中的文件“/app/.heroku/python/lib/python3.6/site packages/django/db/models/sql/compiler.py” 引发原始_异常

    返回super(CursorDebugWrapper,self)。执行(sql,参数)

    文件“/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py” 返回self.cursor。执行(sql,参数)

    出口 94.6。重新播放(dj\u exc\u类型、dj\u exc\u值、回溯)

    685.提升价值。带_回溯(tb)

    文件“/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py”

    异常类型:ProgrammingError at/u/profile/ 异常值:无法适应类型“MyUser”

    2 回复  |  直到 7 年前
        1
  •  0
  •   zaidfazil    7 年前

    线路需要更改,

    user = get_object_or_404(User, username=request.user.username)
                                                        #^^^^^^^^^^
    post_list = Post.objects.filter(author__username__iexact=user.username).order_by('-submission_time')
                                                                  #^^^^^^^