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)

我发现in__unicode__方法失败,导致DoesNotExist异常。Django“认为”相关城市不存在,认为它肯定存在。我已经重新检查过了,数据库是有效的。我使用了 Sqlite 和 Postgres,两者都加载\转储数据库数据,但都引发了这个异常。所以我认为这与一些代码问题有关,而不是与数据库不一致。

完整的追溯在这里(真的没有信息):http ://dpaste.com/hold/1429873/

当我检查文件中的值时virtenv_macos/lib/python2.7/site-packages/debug_toolbar/panels/template.py,第 85 行(*pformat(value)*)- 它告诉我“值”变量具有以下值:*[broken repr (DoesNotExist)]*

MacOS、Python 2.7、Django 1.5.2

PS当我试图查看数据库记录列表(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 回答