django - 为什么用户模型具有字符串类型?

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

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

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

最佳答案

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

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

from .models import Question
from django.contrib.auth import <b>get_user_model</b>

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

关于django - 为什么用户模型具有字符串类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67806721/

相关文章:

python - 测试 Python 装饰器?

django - 为什么我需要一个单独的 Django 网络服务器?

python - DateTimeField 查询集在 Django 中返回 None

Django 查询多对一关系

django - 试图找出后测试 Django-Rest-Framework API 中 400 错误的原因

python - 尾随零在我的 DecimalField 上不一致地出现

django - Rest-auth 中的自定义用户模型 : RelatedObjectDoesNotExist

python - Django:存储多个动态排序的模型序列

python - ids 对象的 Django DRF 列表

python - 带 DRF 的 Django 过滤器 - 在使用相同查找应用多个值时如何处理 'and'?