Python 如何只更新一个字段而不是创建另一个对象-django 1.4
我正在尝试更新对象,而不是创建新对象。我有信息,我想检查这个信息是否已经存在于数据库中,即使在字段中存在一些差异,这意味着我手中的新信息与数据库中的信息相同,但只有一些字段是新的->因此我只需要更新该对象Python 如何只更新一个字段而不是创建另一个对象-django 1.4,python,django,Python,Django,我正在尝试更新对象,而不是创建新对象。我有信息,我想检查这个信息是否已经存在于数据库中,即使在字段中存在一些差异,这意味着我手中的新信息与数据库中的信息相同,但只有一些字段是新的->因此我只需要更新该对象 location, created = Location.objects.get_or_create(**loc_fields) if created: num_of_new_locs+=1 #number of new locations increased else: loca
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被更改,我将创建新对象,否则我将更新现有对象
我该怎么做<代码>创建\或\更新或更新\字段
仅在1.7dev中,我猜
在django1.4中执行此操作的最佳方法是什么?如果您使用唯一标识符查找
位置,而不是尝试匹配所有字段,则代码将按预期工作:
location, created = Location.objects.get_or_create(pk=pk)
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()
如果不知道哪些字段已更改,则无法检索传入所有可能的键/值对的对象。即使其中一个字段不同,查找也会失败-这就是为什么您要获得新对象的原因。我建议通过一个不会改变的参数来查找Location对象,比如ID。谢谢,Brandon。因此,我将不得不删除旧版本,然后通过管理。比特,和Ja,你是werden。不,我在德国,aber meine Großmutter war。我在德国的比萨店买的。舍恩·舍恩:)吕布里根,秃顶的布劳奇我是维德·弗尔