【发布时间】:2011-06-29 09:45:32
【问题描述】:
我正在使用以下代码。
class CommonFunctions(object):
def get_absolute_url(self):
return "/{0}/list/".format(self.__class__.__name__).lower()
def get_fields(self):
return [(field, field.value_to_string(self)) for field in (self.__class__)._meta.fields]
class Meta:
abstract = True
班级是
class Book(models.Model, CommonFunctions):
book_name = models.CharField(max_length=30)
book_area = models.CharField(max_length=30)
现在如果我使用这个我会得到一个错误,
ForeignKey无法定义与抽象类的关系
但是如果我使用
class Meta:
abstract = False
在Book 类中它可以工作。
如果他们的documentation 说它应该继承false,为什么它要继承true?
Django 确实对抽象基类的 Meta 类做了一个调整:在安装 Meta 属性之前,它设置了
abstract=False。这意味着抽象基类的子类本身不会自动成为抽象类。
【问题讨论】:
-
好的,感谢您今天与我们分享,bidu。你有什么问题?
-
:) ,我的问题是他们的文档说默认情况下它将继承 False 不是 true
-
@bidi - 也许您应该将其作为 Django 错误报告发布?
-
@Bo 我对 Django 很陌生,我不认为我可以在 django 中找到错误,所以我想我一定是在某个地方错了
标签: django inheritance abstract-class