Django objects.get_or_create():从字典或列表传递参数

时间:2018-09-05 22:31:55

标签: python django

我目前有一个django管理命令,用于导入基于this answer的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函数。我相信这应该很简单。

1 个答案:

答案 0 :(得分:1)

首先,您的字典应如下所示:

csv_row = {"account_no": "123-456", "name": "v25"}

请确保使用DictReader,以便您正在读取csv文件的标题,然后正确地迭代csv文件的行,即,每个dict的键都是列名。

然后,get_or_create调用将非常简单,如下所示:

Customer.objects.get_or_create(**csv_row)