Django REST框架HyperlinkedModelSerializer写操作

时间:2013-09-07 10:29:03

标签: python django django-rest-framework

在我的项目中,我正在使用OneToOneField与用户添加字段'screen_name'。

class Player(models.Model):
    screen_name = models.CharField(max_length=200)
    user = models.OneToOneField(User, primary_key=True)

由此我想创建一个资源'播放器',使用django REST框架在透明的mannor中编辑用户信息和'screen_name'。

通过互联网查看我发现编写自定义序列化程序可能是前进的方法,但我在文档上找不到如何组合两个模型,或使用超链接序列化程序。

我现在有:

class PlayerSerializer(serializers.HyperlinkedModelSerializer):

    # I need some bad ass code here to link through the 'User' model data so I can do 
      proxy POST GET DEL operations through the 'Player' resource

    class Meta:
    model = Player
    fields = ('screen_name','username','password','email','first_name', 'last_name')

有没有人有任何可以告诉我的代码,可以做类似的事情?

1 个答案:

答案 0 :(得分:0)

我认为HyperlinkedModelSerializer在这里有合理的记录:

http://django-rest-framework.org/api-guide/serializers#hyperlinkedmodelserializer

...可能不是你上次搜查的时候。

免责声明:我不是程序员或rest_framework专家

我可能在这里完全错误的路径,但我觉得有点像你链接的两件事是不同的URI - 即www中的不同资源 - 并且应该被视为这样(除非你真的没有需要将后端的两件事分开。)

我并不是说你应该对你的漂亮RESTful API的消费者施加蹩脚的体验。我认为你可能最好创建一个函数/方法,它可以在一次调用中接收你所追求的数据,然后它可以管理对象操作服务器端。

我对这种方法的看法感兴趣,因为我决定以这种方式为自己管理事物。我觉得它有助于保持URI的分离,并更好地抽象出任何潜在的复杂性,允许独立更改任何URI。