如何在DRF中序列化自定义用户模型

dev*_*jim 5 python django serialization django-serializer django-rest-framework

我已经制作了一个自定义用户模型,通过参考教程,这就是我如何序列化新用户模型:

Serializers.py

from django.conf import settings
User = settings.AUTH_USER_MODEL

class UserSerializer(serializers.ModelSerializer):
    post = serializers.PrimaryKeyRelatedField(many=True, queryset=Listing.objects.all())
    class Meta(object):
        model = User
        fields = ('username', 'email','post')
Run Code Online (Sandbox Code Playgroud)

Views.py

from django.conf import settings
User = settings.AUTH_USER_MODEL
class UserList(generics.ListAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用这个序列化器时,我得到了

'str'对象没有属性'_meta'

我做错了什么?

lev*_*evi 14

代替

User = settings.AUTH_USER_MODEL
Run Code Online (Sandbox Code Playgroud)

使用

from django.contrib.auth import get_user_model
User = get_user_model()
Run Code Online (Sandbox Code Playgroud)

请记住,这settings.AUTH_USER_MODEL只是一个string表示您将使用哪个用户模型而不是模型本身.如果您想获得模型,请使用get_user_model

  • 你是对的。但是对于 django 1.8,它应该是`from django.contrib.auth import get_user_model` (2认同)
  • @levi 感谢您的回答,只需要进行一些小的更正。你已经写了“from from django.contrib.auth import get_user_model”请更新为single from。 (2认同)