如何使用DjangoRestFramework序列化为多个模型

时间:2013-05-07 21:52:19

标签: django api serialization django-rest-framework

我已经定义了一个用户配置文件模型,但希望有一个api端点将所有用户数据保存到两个模型中。我的意思是,我使用的是用户模型,我的userprofile模型定义如下

class UserProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    biography = models.TextField()

当我定义一个用于创建新用户的序列化程序时,如何让它将数据序列化为用户模型和userProfile模型?

1 个答案:

答案 0 :(得分:18)

您只需为每个定义一个序列化程序,并将其中一个附加到另一个,如下所示:

from rest_framework.serializers import ModelSerializer

class UserSerializer(ModelSerializer):
    """
    A serializer for ``User``.
    """
    class Meta(object):
        model = User


class UserProfileSerializer(ModelSerializer):
    """
    A serializer for ``UserProfile``.
    """
    user = UserSerializer()

    class Meta(object):
        model = UserProfile

然后,您可以使用UserProfileSerializer更新(或执行其他操作)用户个人资料及其用户实例。