How to serialize into multiple models using Django

2019-04-28 06:45发布

I have defined a user profile model, but want to have one api endpoint that saves all of the user data into both models. By that I mean, I am using the user model and I have a userprofile model defined as follows

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

when I define a serializer for creating a new user, how do I get it to serialize data into both the user model, and the userProfile model?

1条回答
看我几分像从前
2楼-- · 2019-04-28 07:10

You just need to define a serializer for each, and attach one to the other, as follows:

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

You could then use UserProfileSerializer to update (or perform other actions to) a user profile and its user instance.

查看更多
登录 后发表回答