gpt4 book ai didi

python - Django get_or_create 返回模型。导入 CSV 时不存在

转载 作者:行者123 更新时间:2023-12-05 02:19:24 24 4
gpt4 key购买 nike

我花了很多时间来解决这个问题。我只是尝试使用 Python 的 csv 模块和 Django 的 get_or_create() 导入 CSV 文件。

这是我的简单代码(基于 this 代码):

import csv
from .models import Person

def import_data():
with open('/path/to/csv/people_list.csv') as f:
reader = csv.reader(f)
for row in reader:
_, created = Person.objects.get_or_create(
name=row[0],
p_id=row[1],
current_status=row[2],
)

当我在 shell 上运行 import_data() 时出现以下错误

peoplelisting.models.DoesNotExist: Person matching query does not exist.

是的,这个特定的人不存在,但这不是使用 get_or_create() 的全部意义吗?如果不存在,创建它?

最佳答案

经过一番折腾,最终发现问题出在:

我的 csv 还包含一个我没有忽略的标题行。我原以为我会继续零敲碎打,只有在我让 csv 导入工作后才会忽略 header 但是 header 本身造成了问题(感谢 this 帖子(间接)帮了大忙)。 header 中的值与模式(max_length 等)不匹配,这就是 Person matching query does not exist 所指的内容。忽略标题使其工作。不过,我只是希望错误消息更具描述性。希望它能帮助其他人节省我花在调试一件简单事情上的时间。这是正确的代码:

import csv
from .models import Person

def import_data():
with open('/path/to/csv/people_list.csv') as f:
reader = csv.reader(f)
for row in reader:
if row[0] != 'Person_name': #where Person_name is first column's name
_, created = Org.objects.get_or_create(
name=row[0],
p_id=row[1],
current_status=row[2],
)

关于python - Django get_or_create 返回模型。导入 CSV 时不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com