0

在我的项目中,我使用 OneToOneField 和用户添加字段“screen_name”。

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

由此,我想使用 django REST 框架创建一个资源“播放器”,以透明方式编辑用户信息和“屏幕名称”。

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

我目前有:

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')

有没有人可以向我展示可以做类似事情的任何代码?

4

1 回答 1

0

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

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

...您上次搜索时可能不是。

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

我可能在这里完全错误的道路上,但我觉得你链接的两个东西是不同的 URI - 即 www 中的不同资源 - 并且可能应该这样对待(除非你真的不需要分开后端的两件事)。

我并不是说你应该强迫你的 RESTful API 的使用者糟糕的体验。我认为您最好创建一个函数/方法,该函数/方法可以在一次调用中接收您所追求的数据,然后它可以管理服务器端的对象操作。

我对这种方法的看法很感兴趣,因为我已经决定为自己以这种方式管理事情。我觉得它有助于保持 URI 的分离并更好地抽象任何底层复杂性,从而允许独立更改任一 URI。

于 2013-11-27T10:16:26.620 回答