Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何只更新一个字段而不是创建另一个对象-django 1.4_Python_Django - Fatal编程技术网

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。我在德国的比萨店买的。舍恩·舍恩:)吕布里根,秃顶的布劳奇我是维德·弗尔