循环数据:cmp中超出最大递归深度

时间:2013-01-22 00:50:59

标签: python django

我正在使用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它将按预期工作,但如果我使用从循环收集的数据,它会开始抛出该错误。

最后,我想知道如何纠正这种类型的错误,希望能更好地理解为什么会这样做。

1 个答案:

答案 0 :(得分:1)

好的,所以在戳了戳并调查它为什么这样做之后。我注意到对象的type不是真正的string类型,或者在这种情况下是str。我使用BeautifulSoup从一些XML文件中获取数据,当我使用bs4.find().string时,它给了我一个NavigableString而不是普通的字符串。

因此,为了将来参考,请确保type是正确的。向Django过滤器提供NavigableString给了我意想不到的错误