如何构建一个Django查询来保存来自json变量的int和str混合?

2024-09-29 21:49:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个JSON变量,比如:

myjson = [{"name":"bla", "value":111}, {"name":"ble", "value":222}, {"name":"bli", "value":333}, {"name":"blo", "value":444}]

我的Django模型是:

^{pr2}$

我想把这一行(从我的视图.py)公司名称:

^{3}$

我不知道如何构建迭代JSON的查询。在

如果我建立一个字符串:

#>>> q="lalala"
#>>> myzonesstring = 'name="'+q+'", '
#>>> for m in myjson: 
#...     myzonesstring += str(m["name"])+'='+str(m["value"])+', ' ... 
#>>> myzonesstring 'name="lalala", bla=111, ble=222, bli=333, blo=444, '
#>>> myzonesstring[:-2] 'name="lalala", bla=111, ble=222, bli=333, blo=444'
#>>> query = myTable(myzonesstring[:-2])
#>>> query.save() [. python . ValueError: invalid literal for int() with base 10: 'name="lalala", bla=111, ble=222, bli=333, blo=444'

Tags: djangoname模型jsonforvaluequerybla
2条回答

@托尔斯滕:是的,我成功了。这里是片段(直接从我的视图.py)在

mydict = dict(map(lambda x: (x["name"], x["value"]), myjson)) 
mydict["query"]="lalala" 
m = Queries(**mydict) 
m.save()

它在ddbb中正确保存。再次感谢

我不太参与django,但在我看来,您没有正确初始化您的模型。根据django文件:

Creating objects

To create a new instance of a model, just instantiate it like any other Python class:

class Model(**kwargs)

The keyword arguments are simply the names of the fields you’ve defined on your model.

因此,我希望您必须从json构建一个dict,而不是将其用作模型的kwargs—init

myjson = [{"name":"bla", "value":111}, 
          {"name":"ble", "value":222}, 
          {"name":"bli", "value":333}, 
          {"name":"blo", "value":444}]

kwargs = dict(map(lambda x: (x["name"], x["value"]), myjson))    
kwargs["name"] = "lalala"

table = myTable(**kwargs)
table.save()

顺便说一句,我将query重命名为table;如果不创建查询,则创建一个对象(myTable类的实例)。然后,当调用save()时,该对象负责为数据库创建查询

您好, 托尔斯滕

相关问题 更多 >

    热门问题