0

get_or_create を使用してアイテムが存在するかどうかを確認するためにアイテムを反復処理する Django を使用しています。今、私はこの問題を抱えています

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 の経験が浅いため、間違った見方をしている可能性があります。このタイプのエラーが発生した場合の続行方法がわかりません。構造を少し変更しようとしましたが、役に立ちませんでした。奇妙なことに、 a を使用するstringgame_name期待どおりに動作しますが、ループから収集したデータを使用すると、そのエラーがスローされ始めます。

最後に、この種のエラーを修正する方法を知りたいと思います。うまくいけば、なぜそうなるのかをもう少し理解できれば幸いです。

4

1 に答える 1

1

さて、なぜそうなったのかを突っついて調査した後。typeオブジェクトの が真のstring型 (この場合は ) ではないことに気付きましたstr。私は BeautifulSoup を使用していくつかの XML ファイルからデータを取得しbs4.find().stringました。これを使用するNavigableStringと、通常の文字列ではなく、

今後の参考のために、 が正しいものであることを確認してtypeください。NavigableStringDjangoフィルターにフィードすると、この予期しないエラーが発生しました

于 2013-01-22T16:13:42.783 に答える