Django仅更新模型实例中的空行

时间:2017-09-20 02:28:19

标签: python django model

我正在循环查看一系列词汇并从dicts创建模型(期刊)。他们与研究员有很多关系。

每个字典都是这样的

 {'abbreviation': 'Front. Artif. Intell. Appl.',
  'journal_type': 'k',
  'title': 'Frontiers in Artificial Intelligence and Applications'}

但是,这个列表中有重复项,这很好,我手动检查它们是否存在,如果它们存在,我不会为它创建一个新模型。

BUT。问题是,dicts列表中的条目具有重复,具有不同程度的缺失列。例如,

条目123

{'abbreviation': 'Front. Artif. Intell. Appl.',
      'journal_type': 'k',
      'title': 'Frontiers in Artificial Intelligence and Applications'}

条目124

{'abbreviation': 'Front. Artif. Intell. Appl.',
 'issn':123,
      'journal_type': 'k',
      'title': 'Frontiers in Artificial Intelligence and Applications'}

如您所见,124比123更“完整”。

在123点,我已经从该哈希创建了日志对象。但是,我想从124更新相同 新字段相同行(在这种情况下,使用issn更新行)< / p>

这样做的正确方法是什么? :)

1 个答案:

答案 0 :(得分:1)

找到一个始终存在的列,在数据库中也可以认为是唯一的(考虑LogicalKey列)。

for entry in entries:
  try:
    record = Model.objects.get(logical_key = entry['logical_key')
    for k,v in entry.items():
      if record._meta.get_field(k) is None:
        setattr(record,k,v)
    record.save()
  except:
    Model.objects.create(field1=entry['field1'],...)