如何将Django order_with_respect_to映射到Django Rest Framework

时间:2016-07-27 10:48:59

标签: django rest model django-rest-framework

我试图在我的Django数据库中存储用户可修改的排序,并通过Django Rest Framework读取/写入。

我在Django中找到了令人敬畏的order_with_respect_to来在Django中对此进行建模。以下是Rest Framework文档中的示例,其中修改了此功能以显示此功能:

class Album(models.Model):
    album_name = models.CharField(max_length=100)

class Track(models.Model):
    album = models.ForeignKey(Album, related_name='tracks')

    class Meta:
        order_with_respect_to = 'album'

这会将排序存储到后端的_order字段中,并允许在Album对象上读取/写入Track顺序:

>>> album = Album.objects.get(id=1)
>>> album.get_track_order()
[3604L, 3605L, 3606L, 3608L, 3607L]
>>> album.set_track_order([3607L, 3606L, 3605L, 3608L, 3604L]

什么是优雅的制作方法" track_order"在Album的其余界面中可访问(读/写)?

基本上我正在寻找ModelGetterSetterMethodField(a ModelField可以访问模型属性,但不能通过get / set函数)或RelatedOrderingField了解Django {{ 1}}模式并使用相关的函数来读/写对象。

到目前为止,我尝试使用order_with_respect_to(适用于阅读,写作失败:SerializerMethodField是只读的)并制作自定义SerializerMethodFields(很适合阅读(返回) RelatedOrderingField函数中的obj.get_track_order(),写入失败,因为在to_representation()函数中我无法访问该对象,因此我不知道如何调用{{ 1}}。

0 个答案:

没有答案