我想知道是否有人有一个将Django REST框架与Django多态相结合的Pythonic解决方案。
给出:
class GalleryItem(PolymorphicModel):
gallery_item_field = models.CharField()
class Photo(GalleryItem):
custom_photo_field = models.CharField()
class Video(GalleryItem):
custom_image_field = models.CharField()
如果我想要django rest框架中所有gallery item的列表,它只会给我GalleryItem(父模型)的字段,因此:id、GalleryItem_field和polymorphic_ctype。那不是我想要的。如果是照片实例,我想要自定义照片字段;如果是视频,我想要自定义图像字段。
到目前为止,我只为GET请求测试了这个,并且这个有效:
对于POST和PUT请求,您可能希望执行类似于使用to_internal_value def重写to_表示定义的操作。
为了完成,我添加了
to_internal_value()
实现,因为我在最近的项目中需要这个。如何确定类型
有可能区分不同的“类”是很方便的;因此我将type属性添加到基本多态模型中,目的是:
这允许将
type
称为“字段”和“只读字段”。type
将包含python类名。向序列化程序添加类型
您可以将
type
添加到“字段”和“只读字段”中 (如果要在所有子模型中使用类型字段,则需要在所有序列化程序中指定类型字段)这是一个通用的、可重用的解决方案。这是一个泛型的
Serializer
,但是修改它以使用ModelSerializer
并不困难。它也不处理序列化父类(在我的例子中,我更多地使用父类作为接口)。使用它:
相关问题 更多 >
编程相关推荐