这是我使用的:
class a(models.Model):
x = models.CharField()
class b(a):
pass
问题在于,当创建 b 的实例时,也会创建 a 的实例,我猜这是因为 b 继承了 Django 分配的某些属性,例如数据库表。我想让 b 拥有所有字段和方法,这样就不会发生重复。如果不简单地将所有代码从 a 复制并粘贴到 b 或使用抽象基类 c 并让 a 和 b 都继承自 c(我只想有两个模型/类),如何做到这一点? 是否必须使用元类?
请您参考如下方法:
class A(models.Model):
#some fields here
x = models.CharField()
class Meta:
abstract = True
class B(A):
pass
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
