如何使用DjangoRestFramework提交链接模型

时间:2013-05-13 12:17:47

标签: django django-rest-framework

继续this问题,您能否举一个有效输入json的示例来同时创建一个新的User和UserProfile?

虽然这可以在用户端点

上成功创建新用户
{
    "username": "newuser", 
    "password": "abc"
}

但是 UserProfile 端点

{
    "user":{
            "username": "newuser2", 
            "password": "abc"
    }
    "biography": "1",
}

返回:

{
    "user": [
        "This field cannot be null."
    ]
}

1 个答案:

答案 0 :(得分:0)

您正在寻找的是对soon be supported的嵌套资源的读取+ 支持,但尚未发布。

但是,如果使用HyperlinkedRelatedField将用户配置文件模型链接到用户模型,则可以先创建用户,然后使用创建的用户URI作为用户参数创建用户配置文件。假设您有以下用户配置文件模型和序列化程序::

# Model:
class UserProfile(models.Model):
country = models.CharField(max_length=127)
wants_newsletter = models.BooleanField(default=False)

# Serializer:
class UserProfile(serializers.ModelSerializer):
user = serializers.HyperlinkedRelatedField('user-detail')

class Meta:
    fields = ('country', 'wants_newsletter')

...以及users/1/的用户对象,您可以为给定用户创建一个新的用户配置文件,并向用户配置文件端点发送以下POST请求::

{
    "country": "Switzerland",
    "user": "/users/1/"
}

如果您的请求太多,请查看the docs