Python Django:我的对象';s列表属性未保存在函数内部
这里是Django的新手。 所以我制作了一个属性为列表的模型。然后我举了一个例子。然后我有一个函数,它有一个for循环,附加到对象的“class list”属性。这并不是将列表数据永久保存到对象的属性(这不是模型对象的全部点吗?)。我对如何做到这一点感到非常困惑Python Django:我的对象';s列表属性未保存在函数内部,python,django,list,class,attributes,Python,Django,List,Class,Attributes,这里是Django的新手。 所以我制作了一个属性为列表的模型。然后我举了一个例子。然后我有一个函数,它有一个for循环,附加到对象的“class list”属性。这并不是将列表数据永久保存到对象的属性(这不是模型对象的全部点吗?)。我对如何做到这一点感到非常困惑 class Mymodel: class_list = [] my_object = Mymodel() values = [1, 2, 3, 4, 5, 4, 3, 2, 1] def myFunction(): fo
class Mymodel:
class_list = []
my_object = Mymodel()
values = [1, 2, 3, 4, 5, 4, 3, 2, 1]
def myFunction():
for value in values:
my_object.class_list.append(value)
return something_unrelated
因此,在我的_对象中,我希望新值保存在它的class_list属性中。我不希望函数返回类列表。我希望Django将属性保存在其数据库中。如果我在for循环之前和之后插入print语句(见下文),我将得到预期的结果
def myFunction():
print(my_object.class_list)
for value in values:
my_object.class_list.append(value)
print(my_object.class_list)
return something_unrelated
在领事馆我会看到的
[]
[1, 2, 3, 4, 5, 4, 3, 2, 1]
但是如果之后我打印(我的对象.class\u列表)
,它将打印[]
那么如何让Django保存我的对象信息呢?我错过了什么,或者我做了什么完全错误的事情
编辑
我想我要找的是save()
函数,但我只是尝试在我的对象ie上使用它
def myFunction():
print(my_object.class_list)
for value in values:
my_object.class_list.append(value)
print(my_object.class_list)
my_object.save()
return something_unrelated
但是如果我再次调用MyFunction,列表仍然是空的(第一个print语句仍然返回空字符串)。我仍然不知道如何将其永久保存到数据库。如果要将对象保存到数据库,需要使用save方法
修改后,请尝试
my\u object.save()
。我仍然不清楚您试图实现什么,为什么要循环。也许会有更多的启示,我们可能会看到一个比Loopfor更好的方法。几天前,我看到一篇精彩的评论描述了这个问题,虽然我现在找不到,但我会用我自己的话来描述。每个HTTP请求都是相互独立的,服务器不应该知道以前的某个请求。你应该有一种心态,即会有多个用户访问你的网站,而你可能同时在多台服务器上运行你的网站。考虑到所有这些,在你尝试(全局)保存数据时保存数据是个坏主意。(我假设您从事开发工作。正在发生的事情是,每个请求都由不同的线程提供服务,其中没有一个线程知道另一个线程做什么)您需要将数据保存到数据库中。您只是命名一个类Mymodel
并不能使它成为Django中的模型,而且模型只使用一些模型字段而不是一些内置python数据类型将数据存储到db中。关于如何使用模型,请参见,当然,仅当您的模型已在models.py文件中注册并且已将其迁移到数据库中时,才可以使用此选项。之后,您可以利用Django的ORM。