我不知道是否可能。希望你们知道我尝试做什么。我想在FOR循环中进行模型更改,因为值的键始终与模型列的名称相同。
我目前的代码:
sites = DataModel.objects.all()
for site in sites:
d = self.getDataBySoup(soup)
site.title = d['title']
site.text = d['text']
site.facebook = d['facebook']
site.twitter = d['twitter']
site.save()
如您所见,密钥始终与django列相同。所以我认为用较少的代码可以做到这一点。
我尝试了什么(但它不起作用):
sites = DataModel.objects.all()
for site in sites:
d = self.getDataBySoup(soup)
for key, value in d.items():
site.key = value
site.save()
我使用Python 3.6
getDataBySoup方法只返回一个dict / array:
def getContentDataBySoup(self, soup):
data = {}
data['title'] = 'some text'
# etc
return data
等
答案 0 :(得分:0)
sites = DataModel.objects.all()
for site in sites:
d = self.getDataBySoup(soup)
DataModel.objects.filter(id=site.pk).update(**d)
上面的代码将使用字典d中的数据更新每个站点条目。如果您正在使用更新方法,那么您还需要指定ID,否则它将无法知道要更新的条目。