wee*_*eeb 1 python django model-view-controller metaclass
这是我正在使用的:
class a(models.Model):
x = models.CharField()
class b(a):
pass
Run Code Online (Sandbox Code Playgroud)
这个问题是当创建一个b的实例时,也会创建一个a的实例,我猜这是因为b继承了Django分配的一些属性,比如数据库表.我希望b拥有所有的字段和方法,以便不会发生这种重复.如何才能做到这一点并不简单地复制和粘贴从所有代码B或使用一个抽象基类C和有A和B都从C继承(我想只有两个型号/班)?你必须使用元类吗?
class A(models.Model):
#some fields here
x = models.CharField()
class Meta:
abstract = True
class B(A):
pass
Run Code Online (Sandbox Code Playgroud)
A将是一个抽象类,你不能单独使用这个类.但我的理解,你想有两个真正的类A和B.在这种情况下,您需要第三个(抽象)类C.因此,他们将从抽象字段继承字段并向其添加额外字段.
例如:假设abstract是C
class C(models.Model):
# the common fields
class Meta:
abstract = True
class A(C):
#extra fields if you need or pass
class B(C):
#extra fields if you need or pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
811 次 |
| 最近记录: |