我见过类似的问题,但它们是从2012年开始的。自那时起,Django Rest Framework发生了变化。
所以,我有一个引用django用户模型的Profile模型。我有一个如下所示的ProfileSerializer:
class ProfileSerializer(serializers.ModelSerializer):
user = UserSerializer
class Meta:
model = Profile
fields = ['user', 'image', 'decription', 'city', 'phone_number']
UserSerializer:
class UserSerializer(serializers.ModelSerializer):
def create(self, validated_data):
user_obj = User.objects.create(first_name=validated_data['first_name'], last_name=validated_data['last_name'],
email=validated_data['email'])
user_obj.set_password(validated_data['password'])
user_obj.save()
return user_obj
class Meta:
model = User
write_only_fields = ['password']
read_only_fields = ['id']
Browsable Api将用户字段显示为注册用户的下拉列表,我需要它来显示UserSerializer字段,以便视图可以同时创建Profile对象和User对象,视图:
class RegisterUser(generics.CreateAPIView):
serializer_class = ProfileSerializer
有可能吗?
编辑,添加模型:
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User)
image = models.UrlField()
....
那么,是否可以使用一个CreateAPIView创建嵌套的User对象和Profile对象?或者我应该分两步完成。欢迎提出所有建议。