我使用Profile.objects.values('id', 'avatar')
从表中检索对象,但是我想在avatar
的模型为media/profile.png
的情况下设置空值
avatar = models.ImageField(upload_to='media', blank=True, default='media/profile.png')
并使用JsonResponse(data, safe=False)
[{"id": "1", "avatar": ""}, {"id": "2", "avatar": ""}, {"id": "3", "avatar": "media/profile.png"}, {"id": "4", "avatar": "media/art_xpr.png"}]
并且在javascript前端中使用,但是问题是在某些情况下头像是空的。
答案 0 :(得分:2)
我相信有更好的方法,但这也行得通
Profile.objects.annotate(
avatar_or_default=Case(
When(avatar='', then=Value('media/profile.png')),
default=F('avatar'),
output_field=CharField()
)).values('id', 'avatar_or_default')
输出应该是这样的
<QuerySet [{'id': 1, 'avatar_or_default': 'media/custom.png'}, {'id': 2, 'avatar_or_default': 'media/profile.png'}, {'id': 3, 'avatar_or_default': 'media/profile.png'}]>