一些新手问,我有这样一个模型:
from django.db import models
class SomeCommons(object):
# some fields here
# ...
class Meta:
abstract=True
class SomeDjangoModels(SomeCommons,models.Model):
pass
是否与以下型号相同:
from django.db import models
class SomeModels(models.Model):
# some fields here
# ...
class Meta:
abstract=True
我知道当这样做时,SomeDjangoModels(SomeCommons,models.Model)
来自SomeCommons
的属性将在SomeDjangoModels
中可用,但问题是如果SomeCommons
包含django Meta
类,那么Meta
类也将在SomeDjangoModels
中可用吗?如果是的话,有没有办法证明它(元类确实存在)?
桑克斯
是的,元类是继承的。。。你知道吗
但是在您的例子中,它什么也不做,因为在继承子类上abstarct被设置为False。你知道吗
Asa结果
SomeModels
将是抽象的,但SomeDjangoModels
不会。你知道吗不,这两个定义不完全相同。你知道吗
默认情况下,a subclass will inherit its parent's ^{} ,但它将而不是继承
abstract=True
属性(因为常见的用例是子类不会是抽象的)。你知道吗如果您确实希望继承它,那么必须显式重写元类,如文档中所示。(从这个问题看来,您确实希望
SomeDjangoModels
也是抽象的,但这并不完全清楚。)如果您确实想要一个具体的(cf meta)子类,那么对于所有实际用途,定义都是相同的。你知道吗
相关问题 更多 >
编程相关推荐