假设我正在编写一个应用程序来更改计算机中的配置。我有3个创建的表,如下所示。机器配置显示了我们机器的当前配置状态。用户可以创建其票证并请求更改配置。 RequestDetails将是保留建议的配置的表,以及一些额外的信息,例如请求者的姓名,日期等。

这些类只是一个简单的示例,在实际模型中,我将有近600多个field =类MachineConfiguration中呈现的配置。我也应该在RequestDetails类中具有完全相同的字段。我想知道在MachineConfiguration模型中存在的所有字段定义类RequestDetails时,是否有一种方法不重复MYSELF?

我想以一种方式编写它,如果我更改了MachineConfiguration表中的任何内容,则同样的更改也将应用于RequestDetails表。

先谢谢您的帮助。

class RequestTicket(models.Model):
    subject=models.CharField(max_length=50, null=False, blank=False)
    description=models.TextField(null=False, blank=True)

class MachineConfiguration(models.Model):
    field_1 = models.CharField(null=False,blank=True)
    field_2 = models.CharField(null=False, blank=True)
    field_3 = models.CharField(null=False, blank=True)

class RequestDetails(models.Model):
    tracking_number=models.ForeignKey('RequestTicket')
    field_A=models.DateField(null=True, blank=False)
    field_B=models.TextField(null=True, blank=False)
    field_1 = models.CharField(null=False, blank=True)
    field_2 = models.CharField(null=False, blank=True)
    field_3 = models.CharField(null=False, blank=True)

最佳答案

是的,您可以创建基类并在另一个类(例如,

class BaseModel(models.Model):
    field1 = models.CharField()
    field2 = models.CharField()

    class Meta:
        abstract = True


并在另一个模型中继承此类以获得相同的字段,

# Now if you change any field in BaseModel, it will reflect in both the models
class MachineConfiguration(BaseModel):
    pass

class RequestDetails(BaseModel):
    field3 = models.CharField()

10-04 11:12
查看更多