django检索对象,空值

时间:2018-12-06 11:18:33

标签: json django django-models

我使用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)

返回json中的所有内容
[{"id": "1", "avatar": ""}, {"id": "2", "avatar": ""}, {"id": "3", "avatar": "media/profile.png"}, {"id": "4", "avatar": "media/art_xpr.png"}]

并且在javascript前端中使用,但是问题是在某些情况下头像是空的。

1 个答案:

答案 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'}]>