Python 现有Django模型的抽象

Python 现有Django模型的抽象,python,django,Python,Django,Django应用程序中有两个模型,它们的字段完全相同,但每个模型中存储的信息类型不同 例如: class A(models.Model) field_a = models.CharField(primary_key = True, max_length = 24) field_b = models.CharField(primary_key = True, max_length = 24) class B(models.Model) field_a = model

Django应用程序中有两个模型,它们的字段完全相同,但每个模型中存储的信息类型不同

例如:

class A(models.Model)
    field_a =  models.CharField(primary_key = True, max_length = 24)
    field_b =  models.CharField(primary_key = True, max_length = 24)

class B(models.Model)
    field_a =  models.CharField(primary_key = True, max_length = 24)
    field_b =  models.CharField(primary_key = True, max_length = 24)
在抽象模型中包含这些类并将这两个类作为子类似乎是有意义的。我假设我可以简单地做到这一点,而不需要对DB进行修改,但是Django再也找不到我的模型的字段了


有人能提供建议吗?

如果您创建了一个新的抽象类,这不会干扰您的数据库。正如您在文档中看到的,抽象类只是python类,不影响数据库

您的代码可能如下所示:

class Parent(models.Model)
    field_a =  models.CharField(primary_key = True, max_length = 24)
    field_b =  models.CharField(primary_key = True, max_length = 24)

    class Meta:
        abstract = True

class A(Parent)
    pass

class B(Parent)
    pass

我最初尝试过这个,但是收到了一个“Exception Type:FieldError”,也许问题出在您所做的一些细节上?也许你错丢了什么东西?其实这就是实现这种事情的方式。如果您可以再试一次,那么了解您得到的确切错误并尝试解决它可能会非常有用。这确实可以很好地工作,顺便说一句,如果您需要一种非抽象的方法来重用数据,子类化queryset是创建