我有一个django-restframwork项目,我在 settings.py 文件中设置了 MEDIA_URL 。问题是当序列化模型时,我得到带 media 前缀的文件名。
这是我得到的答复
{
"employees": [
{
"id": 1,
"name": "neki",
"doc": "/media/simple-nature-wallpapers-free-download-for-desktop-45.jpg"
}
]
}
但是我想要这样的响应,而没有 media 这样的前缀
{
"employees": [
{
"id": 1,
"name": "neki",
"doc": "simple-nature-wallpapers-free-download-for-desktop-45.jpg"
}
]
}
我有两种解决方法。他们两个都有一些问题
models.CharField()
。 (问题是我无法自动从ModelSerializer保存文件)所以我的问题是如何解决这些问题。
答案 0 :(得分:0)
覆盖序列化器的 to_represenataion()
方法
class YourSerializer(.....):
# your code
def to_representation(self, instance):
rep = super(YourSerializer,self).to_representation(instance)
try:
rep['doc'] = rep['doc'].split('/')[-1]
except KeyError:
return rep
return rep
答案 1 :(得分:0)
如果您喜欢序列化程序和视图,我可以为您提供更好的帮助。但简短的答案是: 如果使用post方法发送此响应,则可以在视图中覆盖create方法(如果使用generics.CreateAPIView)。如果得到,则覆盖检索并...。 然后根据需要更改您的回复。您可以在那里访问您的响应数据。
分享您的视图和序列化器以获得更清晰的答案。