【发布时间】:2015-04-20 11:26:42
【问题描述】:
使用 django-rest-framework 3 和 django 1.8
我正在尝试使用 django-rest-framework ModelViewSerializer 创建用户。问题是 DRF 使用的默认 objects.create 方法将密码保留为纯文本。
问题是 DRF 序列化器创建方法使用 objects.create querysets/#create 方法而不是使用 objects.create_user 方法。
serializers.py 第 775 行的代码
instance = ModelClass.objects.create(**validated_data)
对此最好的解决方案是什么?我可以重写 serializer.create 方法以使用 objects.user_create 而不是 objects.create 但它感觉不是正确的解决方案。
其余代码:
from django.contrib.auth.models import User
from rest_framework import viewsets
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'email','password')
write_only_fields = ('password',)
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer = UserSerializer()
【问题讨论】:
-
为什么你觉得不合适?我想我会走那条路。搜索了一下,至少找到了这个 SO 帖子(不同的问题),但在接受的答案中覆盖
create()用于此目的。 stackoverflow.com/a/27763502/870769
标签: python django django-rest-framework