1

簡単なコードがあります:

    class City(models.Model):
        slug = models.SlugField(max_length=150, unique=True)
        name = models.CharField(max_length=255)


    class CityPart(models.Model):
        city = models.ForeignKey('City', related_name='rel_cityparts')
        slug = models.SlugField(max_length=150, unique=True)
        name = models.CharField(max_length=255)

        def __unicode__(self):
            #return self.name
            return u'%s (%s)' % (self.name, self.city.name)

__unicode__inメソッドが失敗し、DoesNotExist例外が発生することがわかりました。Django は、関連する都市が存在しないと「考え」、確かに存在すると考えていました。再確認しましたが、DBは有効です。私はSqliteとPostgresを使用しました。どちらもDBデータをロード\ダンプしますが、どちらもこの例外を発生させます。したがって、DBの不一致ではなく、コードの問題に関連していると思います。

完全なトレースバックはここにあります (本当に有益ではありません): http://dpaste.com/hold/1429873/

ファイルの値を確認すると、virtenv_macos/lib/python2.7/site-packages/debug_toolbar/panels/template.py85行目(*pformat(value)*)で、「値」変数に次の値があることがわかります。*[broken repr (DoesNotExist)]*

MacOS、Python 2.7、ジャンゴ 1.5.2

PS 新しいレコードを作成しようとしているときではなく、DB レコード (ListView) のリストを表示しようとしているときに例外が発生します。

4

2 に答える 2

0

この投稿を見るべきだと思います。

CityPart インスタンスを作成して ____unicode____ メソッドを呼び出そうとしていて、都市を設定していない場合、例外が発生します。

あなたの悪いコードは次のとおりです。

c = CityPart()
c  # This fail because you don't set the City!


#  try that
city = City(name='foo', slug='fooslug')
city.save() 
c = CityPart(city=city, name='bar')
c  # MAYBE this works, maybe

____unicode____ メソッドで都市を使用しないようにしてください。

class City(models.Model):
    slug = models.SlugField(max_length=150, unique=True)
    name = models.CharField(max_length=255)


class CityPart(models.Model):
    city = models.ForeignKey('City', related_name='rel_cityparts')
    slug = models.SlugField(max_length=150, unique=True)
    name = models.CharField(max_length=255)

    def __unicode__(self):
        #return self.name
        return u'%s' % (self.name,)

申し訳ありませんが私の英語。希望が役立ちます!

于 2013-10-26T03:35:56.063 に答える
0

django-debug-toolbar アプリが原因で、「debug_toolbar.middleware.DebugToolbarMiddleware」ミドルウェアです。残念ながら、デバッグする時間がありません。コメントアウトしただけです。

于 2013-10-28T06:16:48.447 に答える