python - Django objects.get_or_create():从字典或列表传递参数
问题描述
我目前有一个 django 管理命令来导入 CSV 文件,它基于这个答案。主要业务是由下面一行循环完成的:
created = Customer.objects.get_or_create(account_no = int(row[0]), name = row[1])
但是,因为我有许多不同的模型可以运行它,所以我希望将上面的代码放在一个函数中,并从字典中传递属性和行键;所以我会定义类似的东西:
csv_columns = { 0: 'account_no', 1: 'name' }
但是我不知道如何get_or_create
基于此运行该功能。我相信这应该很简单。
解决方案
首先,你的字典应该是这样的:
csv_row = {"account_no": "123-456", "name": "v25"}
确保使用 aDictReader
以便读取 csv 文件的标题,然后正确迭代 csv 文件的行,即产生的每个 dict 的键是列名。
然后,get_or_create
调用将是一个简单的解包,如下所示:
Customer.objects.get_or_create(**csv_row)
推荐阅读
- c# - 来自多维数组c#的多维类数组
- c - 如何在 C 中使用 ctrlz 终止后台进程?
- linux - 为什么某些内核配置没有显示在 .config 中
- haskell - 使用 Barbies 或 Higgledy 将应用效果推向 HKD 领域
- html - 仅适用于 max-height CSS 的更好动画
- java - 使用 Spring Boot 和 Jackson ObjectMapper 时 OffsetDateTime 属性 JSON 序列化的区别
- amazon-route53 - 弹性 IP 与 AWS EC2 实例一起使用,但 Route 53 无法解析域名
- python - 无法在 django 项目中的模板文件夹上呈现 html 页面?
- go - 在 html 代码 Goland IDE 中禁用 sql 语法高亮
- csv - 如何在颤振中打开 CSV 文件?