我正在使用Django迭代项目以查看它们是否存在使用get_or_create。现在我遇到了这个问题
def insert_titles(self):
game = None
title = None
for k,v in self.data.items():
game_exists = Game.objects.all().get_or_create(game_name=v['title']) #will get RuntimeError: maximum recursion depth exceeded in cmp
print game_exists
基本上,这是一个将作为cron作业运行的脚本,因此我必须遍历一堆项目以达到我想要的目的
while True:
try:
data = strategy.process()
filter = FilterGames(data, link)
过滤游戏代码:
def __init__(self, data):
self.data = data
self.insert_titles()
print "init"
我过去使用Play Framework做过这个,也许是因为我对Python缺乏经验我正在以错误的方式看待它,不确定当它给我这种类型的错误时如何继续。我试过改变结构有点无济于事。奇怪的是,如果我在string
中使用game_name
它将按预期工作,但如果我使用从循环收集的数据,它会开始抛出该错误。
最后,我想知道如何纠正这种类型的错误,希望能更好地理解为什么会这样做。
答案 0 :(得分:1)
好的,所以在戳了戳并调查它为什么这样做之后。我注意到对象的type
不是真正的string
类型,或者在这种情况下是str
。我使用BeautifulSoup从一些XML文件中获取数据,当我使用bs4.find().string
时,它给了我一个NavigableString
而不是普通的字符串。
因此,为了将来参考,请确保type
是正确的。向Django过滤器提供NavigableString
给了我意想不到的错误