如何在Django中导入用户模型并选择所有对象

use*_*508 2 django django-views django-users django-rest-framework

我用的时候

from django.conf import settings
Run Code Online (Sandbox Code Playgroud)

在我的DjangoRestFramework视图中,

class UserList(ListCreateAPIView):
    queryset = settings.AUTH_USER_MODEL.objects.all()
    serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)

我收到了错误

AttributeError at /users/

'str' object has no attribute 'objects'

Request Method:     GET
Request URL:    http://localhost:9999/users/
Django Version:     1.5.1
Exception Type:     AttributeError
Exception Value:    

'str' object has no attribute 'objects'
Run Code Online (Sandbox Code Playgroud)

kar*_*ikr 8

settings.AUTH_USER_MODEL是一个字符串.它不是模型对象.

你需要做这样的事情:

try:
    from django.contrib.auth import get_user_model
except ImportError: # django < 1.5
    from django.contrib.auth.models import User
else:
    User = get_user_model()
Run Code Online (Sandbox Code Playgroud)

现在,

queryset = User.objects.all()
Run Code Online (Sandbox Code Playgroud)

- 要么 -

如果你只使用django 1.5,你可以简单地做:

from django.contrib.auth import get_user_model

queryset = get_user_model().objects.all()
Run Code Online (Sandbox Code Playgroud)