使用For-Variables for Django Model列

时间:2017-09-16 09:08:15

标签: python django django-models

我不知道是否可能。希望你们知道我尝试做什么。我想在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

1 个答案:

答案 0 :(得分:0)

sites = DataModel.objects.all()
for site in sites:
    d = self.getDataBySoup(soup)
    DataModel.objects.filter(id=site.pk).update(**d)

上面的代码将使用字典d中的数据更新每个站点条目。如果您正在使用更新方法,那么您还需要指定ID,否则它将无法知道要更新的条目。