python - 带有 if else hasattr 的 for 循环中的字典列表
问题描述
以下代码开始:
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)
这适用于使用in 中的字典创建我的列表产品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)
inentry_obj
以便我仍然可以给出Json
正确的cart_data
.
解决方案
getattr
与第三个默认参数一起使用:
products = [{'id': x.id, 'fabric': getattr(x.fabric, 'name', 'noname'),
'fabricimg': x.fabric.fabric_cover.url} for x in entry_obj.all()]
推荐阅读
- html - 表格边框 CSS
- postgresql - Postgresql SUM 计算列
- sql - 等价于 regexp_substr 中的 regexp_replace((^[AZ])|([IJ])|(?<= ).)
- pytorch - Pytorch LSTM 回归模型的输入值是相同的输出值
- flutter - Flutter ListView.builder 跟随动态变化的 RichText 小部件内的某些 Text 元素
- sql - 透视不返回聚合 (SQL Adventureworks)
- c# - BlobBaseClient 上的 GetPropertiesAsync 未从服务器返回
- php - directadmin 使用 php 将文件上传到另一个用户目录
- python - 在 Python 中的列中拆分字符串
- html - 如何将按钮值放入数据库Django