Python 筛选时未返回DRF图像url
如果我在Python 筛选时未返回DRF图像url,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,如果我在序列化程序或视图中编写一些查询,它不会返回图像的url,而是返回/media/image.jpg,这是为什么 比如说 class GetWishlistSerializer(serializers.ModelSerializer): review = SerializerMethodField() product = CustomForeignKeyField(required=False, queryset=Product.objects.all()) cla
序列化程序
或视图
中编写一些查询,它不会返回图像的url,而是返回/media/image.jpg
,这是为什么
比如说
class GetWishlistSerializer(serializers.ModelSerializer):
review = SerializerMethodField()
product = CustomForeignKeyField(required=False, queryset=Product.objects.all())
class Meta:
model = WishList
fields = ['id', 'user','product', 'review']
def get_review(self, obj):
return Review.objects.filter(product_id=obj.product_id).count()
这不是返回图像的url,而是/media/product\u images/image.png
过滤器如何影响图像url
class Product(models.Model):
category = models.ForeignKey(Category, blank=True, null=True, on_delete=models.CASCADE)
class ProductImage(models.Model):
image = models.ImageField(upload_to='products/%Y/%m/%d', blank=True, null=True)
product = models.ForeignKey('Product', on_delete=models.CASCADE, related_name='images', null=True)
我希望我的输出像这样
"category":"category",
"images":[
{
"id":1,
"product":1,
"image":"http://localhost:8000/media/products/2019/12/14/b_dfdfd_RT-53_K6340SL1.jpg"
},
{
"id":2,
"product":1,
"image":"http://localhost:8000/media/products/2019/12/14/dsdsfxd_RT-53_K6340SL2.jpg"
}
]
这是一个模型,没有过滤,一切都很好,但是使用它就不起作用了
如何返回图像的url?这会很神奇。我没有测试它。但它应该起作用
class ProductImageSerializer(serializers.ModelSerializer):
image = serializers.ImageField(source='image.url', use_url=True)
class Meta:
model = ProductImage
fields = ['id', 'product', 'image']
class ProductSerializer(serializers.ModelSerializer):
category = serializers.CharField(source='category.name')
images = ProductImageSerializer(source='images', many=True)
class Meta:
model = Product
fields = ['category', 'images']
问题很清楚。您到底想要什么?如何返回图像的url?序列化中没有
image
字段。正如您从模型ProductImage
中看到的那样,它存在于产品中,但您并不是这样得到它的。分享一个例子,你希望你的输出看起来如何,答案是它已经存在于我的序列化程序中。如果您注意到我没有在ProductSerializer中使用它,我想使用它GetWishlistSerializer,我的意思是当用户想要添加wishlist时,它应该返回产品的所有数据。它将返回所有数据和图像,但图像不会带有它返回的URL,如/media/products/blablabla
。是否清楚?请尝试ProductImageSerializer
中的image=serializers.ImageField(source='image.url',use_url=True)
应该使用?是的,我使用了,但它返回了这个图像:[{“id”:1,“product”:1,“image”:null}]
您应该有一个与记录关联的图像。