【发布时间】:2017-05-05 05:30:02
【问题描述】:
我正在尝试使用他的个人资料通过 django rest 框架创建一个用户注册端点,这表明我没有为我的序列化程序创建显式的 .create() 方法。我错过了什么?
这是我的models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True)
language = models.CharField(max_length=4, default='es')
def __unicode__(self):
return "%s - %s" % (self.user, self.language)
我的序列化器.py
class ProfileCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = [
'language',
]
class UserSerializer(serializers.ModelSerializer):
profile = ProfileCreateSerializer()
class Meta:
model = User
fields = [
'username',
'profile',
]
def create (self, validated_data):
user = User.objects.create(username=validated_data['username'])
user.set_password(User.objects.make_random_password())
profile_data = validated_data.pop('profile')
Profile.objects.create(user=user, **profile_data)
user.save()
我的意见.py
class ProfileCreateAPIView(CreateAPIView):
queryset = User.objects.all()
model = Profile
serializer_class = UserSerializer
【问题讨论】:
-
这真的是你源代码的缩进吗?你能粘贴完整的回溯吗?
标签: python django django-rest-framework