0
我想要在Django项目中启动的线程中访问查询集结果时发生了一些非常奇怪的事情。线程奇怪的django ORM行为
问题引起的是,在线程的init一切工作正常,但是当我完成run()方法中应该是相同的动作 - 它们返回空。代码和结果如下。
任何想法如何解决这种奇怪的行为,将不胜感激。
CODE:
class FinalDataCreator(threading.Thread):
def __init__(self, final_form_entry, **kwargs):
print "WORKS", final_form_entry.user_form_entries.all()
self.final_form_entry = final_form_entry
print "WORKS", self.final_form_entry.user_form_entries.all()
self.weirdest_thing = self.final_form_entry.user_form_entries.all()
self.jondykeman = "JonDykeman"
super(FinalDataCreator, self).__init__(**kwargs)
def run(self):
print "EMPTY", self.final_form_entry.user_form_entries.all()
print "EMPTY", self.weirdest_thing
print "WORKS", self.jondykeman
print "WORKS", self.final_form_entry
new_test = FinalDataCreator(final_form_entry)
new_test.start()
结果再次
WORKS [<ReviewCustomFormEntry: ReviewCustomFormEntry object>]
WORKS [<ReviewCustomFormEntry: ReviewCustomFormEntry object>]
EMPTY []
EMPTY []
WORKS "JonDykeman"
WORKS ReviewCustomFormEntry
感谢,JD
您好,我刚跑了相同的结果,新的代码。任何其他想法? – jondykeman
将** kwargs传递给init方法的任何原因。你也可以尝试在__init__中初始化任何简单的字符串或整数值,然后在run方法中访问它...就像在init:self.name =“jondykeman”和run:print self.name中一样。请让我知道结果 – anuragal
嗨,本质上,我在__init__中设置的其他任何内容都被称为没有问题。它似乎只是正在被擦除的查询集。我几十次使用这种方法没有问题 - 这是一个非常奇怪和令人讨厌的事件。 – jondykeman