Django模型继承,覆盖字段

ser*_*iuz 3 django inheritance

我正在阅读使用Django的Python Web Development一书,我在书中找到了这个例子:

 class Book(models.Model):
            title = models.CharField(max_length=100)
            genre = models.CharField(max_length=100)
            num_pages = models.IntegerField()
            authors = models.ManyToManyField(Author)

            def __unicode__(self):
                return self.title

    class SmithBook(Book):
        authors = models.ManyToManyField(Author, limit_choices_to={'name__endswith': 'Smith'})
Run Code Online (Sandbox Code Playgroud)

好像它不起作用:

FieldError:类'SmithBook'中的本地字段'authors'与基类'Book'中类似名称的字段冲突

我使用的是Django 1.5.3,本书适用于Django 1.0.

为什么在Django中继承时无法覆盖字段?是否有可能在Django 1.0中,或者这本书中的错误?

Roh*_*han 10

不要以为这是django中允许的,甚至不是1.0.

字段名称"隐藏"是不允许的 - django 1.0

在普通的Python类继承中,子类允许覆盖父类的任何属性.在Django中,不允许使用Field实例的属性(至少目前不是这样).如果基类具有名为author的字段,则无法在从该基类继承的任何类中创建另一个名为author的模型字段.

这仍然适用于最新版本的django.