目前,我试图使用imageField将图像从模型传递到端点,但我不知道如何进行。
这是我的模型:
class searchResultsItem(models.Model):
"""
Model to store search results item for a tableView cell
"""
title = models.CharField(max_length = 100)
price = models.CharField(max_length = 4)
pop = models.IntegerField(default = 0)
distance = models.CharField(max_length = 10)
image = models.ImageField(upload_to="/media",default="/media")
我的观点是:
class searchResultsItemViewSet(viewsets.ModelViewSet):
"""
API or Endpoint that can be viewed or edited
"""
queryset = searchResultsItem.objects.all()
serializer_class = searchResultsItemsSerializer
这是我的序列化程序:
class searchResultsItemsSerializer(serializers.ModelSerializer):
"""
Serializer to parse searchResultsCell data
"""
image = serializers.ImageField(
max_length = None, use_url=True
)
class Meta:
model = searchResultsItem
fields = ('title','price','pop','distance','image')
以下是我的网址:
from panView.searchTableData import views
router = routers.DefaultRouter()
router.register(r'searchResultsItem',views.searchResultsItemViewSet)
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]
然而,当我查看我的端点时,我会得到一个404错误的图像url。这些图像位于“我的应用程序”文件夹上方的媒体目录和“我的项目”文件夹中。文本对象只起作用而不是图像。
如果有人知道如何使用imageField将图像从Django rest框架传递到端点,我希望得到指导。
最佳答案
序列化程序.ImageField
这将返回图像的绝对url,我们需要的是相对url。
你可以这样做-
class searchResultsItemsSerializer(serializers.ModelSerializer):
"""
Serializer to parse searchResultsCell data
"""
image = serializers.SerializerMethodField()
def get_image(self, instance):
# returning image url if there is an image else blank string
return instance.image.url if instance.image else ''
class Meta:
model = searchResultsItem
fields = ('title','price','pop','distance','image')
SerializerMethodField的文档
希望这有帮助。