启动以下代码:
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) in entry_obj,所以我仍然可以给Json正确的cart_data。
发布于 2018-07-03 09:53:54
在第三个默认参数中使用getattr:
products = [{'id': x.id, 'fabric': getattr(x.fabric, 'name', 'noname'),
'fabricimg': x.fabric.fabric_cover.url} for x in entry_obj.all()]https://stackoverflow.com/questions/51151510
复制相似问题