如何获取外键模型的字段出现在Django-Serializer中?

时间:2014-02-25 03:11:47

标签: python django rest serialization

我正在构建一个公开REST API的Django应用程序,用户可以通过该API查询我的应用程序模型中的2个。我按照说明here

我的两个模特是:

  1. 来自django.contrib.auth的Django用户模型
  2. 下面显示的模型。

    class Profile(models.Model):  
        user = models.OneToOneField(User)
    
  3. 我的Serialiazers如下:

    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 /密码登录也能正常工作?

1 个答案:

答案 0 :(得分:0)