我刚开始使用 Django Rest Framework,接手了一个 Django 项目,有两个用户模型:
我想为
mods.User
(绑定了AUTH_USER_MODEL
)和 players.Member
。由于某些原因,它们都继承了AbstractBaseUser
,但涉及不同的信息,只有一个email
字段是共通的。我想为
players.Member
中的用户使用令牌认证,并创建了一个端点/players_endpoint/register
,成功将玩家添加到数据库。然而,添加数据后,JSON 响应会显示:Cannot assign "<Member: offworld_321>": "Token.user" must be a "User" instance.
我的创建视图代码如下:class MemberCreateView(generics.CreateAPIView):
queryset = Member.objects.all()
def post(self, request, format='json'):
serializer = MemberCreateSerializer(data=request.data)
if serializer.is_valid():
user = serializer.save()
if user:
token = Token.objects.create(user=user)
json = serializer.data
json['token'] = token.key
return Response(json, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我在这里跟随教程(链接)
如何让用户注册后接收到一个令牌,用于身份验证?
Token.user
实际上必须是一个User
实例,而不是一个Member
实例。也许你的Member
有一个关联的User
,你可以引用它来检索相关的Token
。 - Ross Rogersmods.User
与players.Member
的关联方式除了mods.User
具有管理员特权之外,没有其他选项。除了使用Token.objects.create
,还有其他选择吗? - dot64dot