【发布时间】:2019-04-30 06:21:56
【问题描述】:
假设,我想创建两个模型,其中第二个模型的所有字段将与第一个模型保持相同,并添加更多字段。有什么好的方法可以实现吗?
一种方法是使用抽象类作为第一个模型,但这意味着我将无法添加第一个模型的实例。您可以在下面的代码中找到示例:
假设我们有两个模型:
class Model1(models.Model):
m1field1 = models.CharField(max_length=255,required=True)
m1field2 = models.CharField(...)
m1field3 = models.CharField(...)
...
m1field8 = models.CharField(...)
class Model2(models.Model):
m1field1 = models.CharField(max_length=255,required=True)
...
m1field8 = models.CharField(...)
m2field1 = models.CharField(...)
...
m2field5 = models.CharField(...)
如您所见,如果我必须重用它,我必须在 Model2 中再次重新定义 m1field1 - m1field8。 有什么办法,不再重复。 我尝试了以下方法:
class Model2(Model1):
m2field1 = models.CharField(...)
...
m2field5 = models.CharField(...)
但是,事后看来,这并没有起作用,它创建了一个从 Model2 到 Model1 的 OneToOneField,这显然是行不通的,因为我必须先用给定的字段创建一个 Model1,然后用字段创建 Model2,然后链接它到模型 1。
一种可能的解决方案是使用具有公共字段的抽象模型。但是有没有其他方法可以达到同样的效果?
【问题讨论】:
标签: django django-models