以下代码开始:
products = [{
"id": x.id,
"fabric": x.fabric.name,
"fabricimg": x.fabric.fabric_cover.url,
} for x in entry_obj.all()]
cart_data = {
"products": products,
"total": cart_obj.total
}
return JsonResponse(cart_data)
使用x(objects)
中entry_obj.all()
的字典创建我的列表产品时,效果很好。
但是现在我遇到的情况是,我有一些x(objects)
而没有x.fabric.name
,而不得不使用填充符,例如像"noname"
这样的简单字符串。
如何在现有的for循环中使用if语句来捕获名称不存在的情况,而是将密钥结构设置为我的字符串值?
我想使用:
if hasattr(entry_obj,"name") > "fabric": x.fabric.name
else > "fabric": "noname"
但是我不确定在哪里将它放在for循环中,以及如何在x(objects)
的{{1}}中进行迭代,因此我仍然可以给entry_obj
正确的{{ 1}}。
答案 0 :(得分:1)
将getattr
与第三个 default 参数一起使用:
products = [{'id': x.id, 'fabric': getattr(x.fabric, 'name', 'noname'),
'fabricimg': x.fabric.fabric_cover.url} for x in entry_obj.all()]