2017-09-20 53 views
0

我正在循環查看一系列的字典並從字典創建模型(日記)。他們與研究人員有多對多的關係。Django只更新模型實例中的空白行

每個字典是這樣的

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

然而,在這份名單中,這是很好的,我手動檢查,看是否存在他們,如果他們這樣做,我不爲它創建一個新的模式複製。

但是。問題是,詞典列表中的條目具有不同程度的缺失列重複。例如,

項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行)

什麼是做到這一點的正確方法? :)

+0

您的條目124如果少於123之後的'''', – aircraft

回答

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'],...) 
+0

剛纔想到這個,驚訝的django沒有更簡單的方法來做到這一點。謝謝! :) – Wboy