Django Rest Framework创建嵌套对象

时间:2016-07-28 16:58:07

标签: django django-rest-framework

我见过类似的问题,但它们是从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对象?或者我应该分两步完成。欢迎提出所有建议。

0 个答案:

没有答案