首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for循环中的字典列表和if else hasattr

for循环中的字典列表和if else hasattr
EN

Stack Overflow用户
提问于 2018-07-03 09:50:04
回答 1查看 144关注 0票数 2

启动以下代码:

代码语言:javascript
复制
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语句来捕获名称不存在的情况,并将键结构设置为我的字符串值?

我想用:

代码语言:javascript
复制
if hasattr(entry_obj,"name") > "fabric": x.fabric.name
else > "fabric": "noname"

但是我不知道应该把它放在for循环中的哪个位置,再加上如何迭代x(objects) in entry_obj,所以我仍然可以给Json正确的cart_data

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-03 09:53:54

在第三个默认参数中使用getattr

代码语言:javascript
复制
products = [{'id': x.id, 'fabric': getattr(x.fabric, 'name', 'noname'),
             'fabricimg': x.fabric.fabric_cover.url} for x in entry_obj.all()]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51151510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档