【发布时间】:2020-08-21 17:27:56
【问题描述】:
我想以 JSON 格式发送图像数组,如下所示:
{"id":1,"timeIntervel":4,"images":["http://127.0.0.1:8000/images/i1.jpg","http://127.0.0.1:8000/images/i2.jpg","http://127.0.0.1:8000/images/i3.jpg","http://127.0.0.1:8000/images/i4.jpg","http://127.0.0.1:8000/images/i5.jpg"]}
我用我的模型的外键尝试了这个。但未能如上得到响应。
模型.py
class slidesModel(models.Model):
images = models.ImageField(upload_to='')
def __str__(self):
return str(self.images.name)
class slideImageArrayModel(models.Model):
timeIntervel=models.IntegerField()
images = models.ForeignKey(slidesModel, on_delete = models.CASCADE)
def __str__(self):
return str(self.id)
serializer.py
class slideSerializer(serializers.ModelSerializer):
class Meta:
model = slidesModel
fields='__all__'
class slideImgArraySerializer(serializers.ModelSerializer):
class Meta:
model = slideImageArrayModel
fields='__all__'
depth = 1
views.py
class slidesViewSet(viewsets.ViewSet):
def retrieve(self, request, pk=None):
queryset = slideImageArrayModel.objects.all()
user = get_object_or_404(queryset, pk=1) #it will always sends the first object
serializer = slideImgArraySerializer(user)
return Response(serializer.data)
我现有的输出需要一些修改才能实现实际输出:
{
"id": 1,
"timeIntervel": 4,
"images": {
"id": 8,
"images": "/images/b1.jpg"
}
}
我正在 localhost 中对此进行测试,但它没有显示完整的 url。我已经在设置和 urls.py 中包含了 MEDIA_ROOT url
【问题讨论】:
-
你不应该在相反方向定义
ForeignKey吗? -
您的意思是在 slideImageArrayModel 中?它会给出相同的结果吗?
-
不,因为
ForeignKey是多对一关系,所以多个图像可以映射到同一个slidesModel,而slidesModel可以有零个、一个或多个图像. -
你能给我一个例子或任何参考链接吗?我对 Django 很陌生
标签: arrays json image django-rest-framework