【问题标题】:Why User model has type string?为什么用户模型有类型字符串?
【发布时间】:2021-08-20 16:58:05
【问题描述】:

我有一个返回与用户相对应的数据的视图,但是当我尝试查找用户时出现此错误:

Type str has no object method

文件views.py

from .models import Question, User 

@api_view(['POST'])
@renderer_classes((TemplateHTMLRenderer, JSONRenderer))
def answers_view(request, *args, **kwargs):
    userstring = request.data["name"]
    try:
        user0 = User.objects.get(username=userstring)
    except ObjectDoesNotExist:
        user0 = "NotFound"
    print("USER: ", user0, flush = True)

文件模型.py

from django.db import models

# Create your models here.
import random
from django.conf import settings
from django.db import models
from django.db.models import Q

User = settings.AUTH_USER_MODEL

【问题讨论】:

    标签: django django-models django-rest-framework django-views


    【解决方案1】:

    AUTH_USER_MODEL 设置是一个字符串,这通常用来指代用户模型,例如在ForeignKey 中,这样做的好处是在那一刻,用户模型不必加载(还)。

    为了获得模型的引用,您使用get_user_model() function [Django-doc]

    from .models import Question
    from django.contrib.auth import get_user_model
    
    @api_view(['POST'])
    @renderer_classes((TemplateHTMLRenderer, JSONRenderer))
    def answers_view(request, *args, **kwargs):
        userstring = request.data['name']
        try:
            user0 = get_user_model().objects.get(username=userstring)
        except ObjectDoesNotExist:
            user0 = 'NotFound'
        print('USER: ', user0, flush=True)

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多