在我的项目中,我正在使用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')
有没有人有任何可以告诉我的代码,可以做类似的事情?
答案 0 :(得分:0)
我认为HyperlinkedModelSerializer在这里有合理的记录:
http://django-rest-framework.org/api-guide/serializers#hyperlinkedmodelserializer
...可能不是你上次搜查的时候。
免责声明:我不是程序员或rest_framework专家
我可能在这里完全错误的路径,但我觉得有点像你链接的两件事是不同的URI - 即www中的不同资源 - 并且应该被视为这样(除非你真的没有需要将后端的两件事分开。)
我并不是说你应该对你的漂亮RESTful API的消费者施加蹩脚的体验。我认为你可能最好创建一个函数/方法,它可以在一次调用中接收你所追求的数据,然后它可以管理对象操作服务器端。
我对这种方法的看法感兴趣,因为我决定以这种方式为自己管理事物。我觉得它有助于保持URI的分离,并更好地抽象出任何潜在的复杂性,允许独立更改任何URI。