我正在尝试更新对象而不是创建一个新对象。我有信息,我想检查数据库中是否已经存在此信息,即使字段存在一些差异,这意味着我手中的新信息与一个数据库相同,但只有一些字段是新的 -> 所以我只需要更新那个对象。
location, created = Location.objects.get_or_create(**loc_fields)
if created:
num_of_new_locs+=1 #number of new locations increased
else:
location.url= loc_fields['url']
location.locationname = loc_fields['locationname']
location.desc = loc_fields['desc']
location.str_hnr = loc_fields['str_hnr']
location.save()
但是这段代码总是在创建新对象。我的问题是,我事先不知道哪个字段可能已经改变。这就是我这样做的原因:如果 locationname 或 url 发生更改,我将创建新对象,否则我将更新现有对象..
我怎样才能做到这一点?create_or_update
或者update_fields
仅在 1.7dev 中,我猜。
在 django1.4 中这样做的最佳方法是什么?