首页 > 解决方案 > 添加记录时填充数据的更简洁方法

问题描述

我想知道当您必须向大量字段添加数据时是否有更好的方法来创建记录。

country.objects.create(name=name, population=population, code=code, mobile_code=mobile_code, ...)
# imagine 10 more fields that have to be filled

此外,如果字段值为 none,则使用模型中指定的默认值。例如如果人口变量是无,那么不要使人口=无,使用默认值。

标签: pythondjangodjango-models

解决方案


您可以使用以下值构建字典:

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)

推荐阅读