【问题标题】:How to get a field of a foreign key Model appear in a Django-Serializer?如何让外键模型的字段出现在 Django-Serializer 中?
【发布时间】:2014-02-25 03:11:47
【问题描述】:

我正在构建一个 Django 应用程序,该应用程序公开一个 REST API,用户可以通过该 API 查询我的应用程序的两个模型。我按照here 的指示进行操作。

我的两个模型是:

  1. 来自 django.contrib.auth 的 Django 用户模型
  2. 如下图所示。

    class Profile(models.Model):  
        user = models.OneToOneField(User)
    

我的序列化器如下:

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', )

class ProfileSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Profile
        fields = ('id', 'slug', 'user',)

当我从命令行点击 API 时,我可以看到这是有效的:

% curl -H 'Accept: application/json; indent=4' -u root:MyPassword http://127.0.0.1:3001/api/profiles/60/
{
    "id": 60,
    "slug": "myprofile",
    "user": "http://127.0.0.1:3001/api/users/16/"
}

% curl -H 'Accept: application/json; indent=4' -uroot:MyPassword http://127.0.0.1:3001/api/users/16/
{
    "url": "http://127.0.0.1:3001/api/users/16/",
    "username": "myUser",
    "email": "myemail@gmail.com"
}

我想知道两件事:

  1. 如何更改我的个人资料的序列化程序,以使用户的用户名出现在序列化的个人资料中?
  2. 如何公开此 API,以便即使没有 root/密码登录也能正常工作?

【问题讨论】:

标签: python django rest serialization


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2014-12-03
    • 2020-07-24
    • 1970-01-01
    • 2020-06-19
    • 2015-06-13
    相关资源
    最近更新 更多