python - 添加记录时填充数据的更简洁方法
问题描述
我想知道当您必须向大量字段添加数据时是否有更好的方法来创建记录。
country.objects.create(name=name, population=population, code=code, mobile_code=mobile_code, ...)
# imagine 10 more fields that have to be filled
此外,如果字段值为 none,则使用模型中指定的默认值。例如如果人口变量是无,那么不要使人口=无,使用默认值。
解决方案
您可以使用以下值构建字典:
data = dict(name=name, population=population, code=code, mobile_code=mobile_code)
接下来,我们可以使用字典解析来过滤出 value 所在的键值对None
,并使用字典解包来创建该国家:
country.objects.create(**{k: v for k,v in data.items() if v is not None})
当您在循环中执行此操作时,您可以使用.bulk_create(..)
[Django-doc]批量插入多个项目。您首先创建一个Country
对象列表:
countries = []
for … in …:
# …
data = dict(
name=name,
population=population,
code=code,
mobile_code=mobile_code
)
countries.append(country(**{k: v for k,v in data.items() if v is not None}))
country.objects.bulk_create(countries)
推荐阅读
- java - 使用 @SpringConfigureMockMvc 和 Hibernate 方言的意外行为
- python - 有没有办法在python中调用多个同名文件来合并一个
- r - R:了解“makePSOCKcluster”的影响
- python - 如何从 URL 而不是文件对图像进行 base64 编码?
- signal-processing - 过滤具有可变和漂移基线的噪声信号
- java - 如何在 Postgres SQL(使用 liquibase 的 JPA)中定义/保存 java.util.Calendar?
- selenium - 无法使用 XPath 在 Selenium 中定位元素,即使在检查时该元素在控制台中对于相同的 XPath 可见
- c++ - 将 HTML 呈现到窗口是否需要 CLSID_WebBrowser 或仅需要 CLSID_HTMLDocument?
- javascript - 如何在 ie11 中单独使用 babel
- javascript - 基于 PHP 循环的 Javascript 循环