Skip to main content
 首页 » 编程设计

python之Django 重复模型定义/字段

2025年05月04日38TianFang

这是我使用的:

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