2011-04-04 64 views
1

我正在使用Django 1.2.3。我有一个代表类别和子类别的表格。对于子类别,它只是将其自己的表中的“父”主键引用为其父项。它看起来是这样的:django - order_with_respect_to递归外键

class Category(models.Model): 
    def __unicode__(self): 
     return self.name 
    class Meta: 
     db_tablespace = 'Category' 
     verbose_name = 'Category' 
     verbose_name_plural = 'Categories' 
     ordering = ['display_weight', 'name'] 
     order_with_respect_to = 'parent' 
    name = models.CharField('Category Name', max_length=32) 
    parent = models.ForeignKey('self', blank=True, null=True) 
    display_weight = models.IntegerField('Display Weight', default=50) 

,当我尝试验证/ SYNC这个数据库,我收到以下错误:

AttributeError: 'str' object has no attribute 'get_category_order'

看来,它不会让我对于订购“外键”是递归的。任何人都可以解释一下有没有解决的办法?可能有几个级别的类别和子类别,但是永远不会在表格中定义循环引用。

+0

这很奇怪,我试过用南,它工作得很好。你在Django项目中使用South吗? – 2011-04-04 00:50:34

回答

2

这个changeset显示你的问题已经在你正在使用的django版本中修复。它是这个changeset的回溯。

的问题在这里讨论这些门票:

http://code.djangoproject.com/ticket/2740

http://code.djangoproject.com/ticket/13241

您可能要检查,如果你的Django有补丁代码。

+0

谢谢kriegar,这张票有我的对象几乎完全像我一样定义。这似乎是一个直截了当的错误。我下载了base.py的diff文件,并将其作为ubuntu中.deb软件包中文件的补丁应用,但我似乎仍然收到相同的错误消息。 – 2011-04-04 03:17:19