从Django查询中提取值的正确方法

时间:2018-10-16 15:42:42

标签: python django

如何将Django查询的结果设置为等于一组新变量? 例如,当我在Django shell上运行此查询时:

getDefaults = defaultParams.objects.filter(isDefault = True, device = 41)

然后运行:

for val in getDefaults.values():
    print(val)

它返回:

{'id': 2, 'device_id': 41, 'customerTag': 'ABCD001', 'isDefault': True}

我想使用此字典中的值将新记录保存到数据库中,但似乎无法从字典中提取值? 我以为会是这样:

device_id = getDefaults.device_id
NewCustomerTag = getDefaults.customerTag

2 个答案:

答案 0 :(得分:1)

values()显式返回字典列表,因此您需要使用字典语法:val['device_id']

但是对于您而言,没有理由这样做。完全跳过values调用,您将获得一个defaultParams实例,可以在该实例上使用常规属性查找:

for val in getDefaults:
    print(val.device_id)

答案 1 :(得分:1)

您不能执行 getDefaults.device_id ,因为 defaultParams.objects.filter 返回匹配对象的列表。

如果确定自己有一场比赛,请执行以下操作。

print

您可以遍历列表并使用字典数据。

Calendar

如果要将检索到的对象信息另存为新对象,我建议采用以下方法。

var calendar = Calendar.current
calendar.timeZone = TimeZone(secondsFromGMT: 0)!