我在我的应用程序中广泛使用了Django模型。我想创建另一个继承该模型的模型,以便我可以在整个代码中继续使用原始模型,但将字段移动到新模型
我有:
class MyModel(models.Model):
field1 =...
field2=...
field3=...
我想将field3移动到新模型:
class MyModel2(MyModel):
field3=...
然后我想将field3不为null的MyModel实例变为MyModel2实例。
代码将继续引用MyModel,但在某些特殊情况下,我会改用MyModel2。这可能吗?可取?有没有更好的办法?我考虑过制作一个既可以继承的基本抽象模型,但是你不能在形式和事物中使用抽象模型。
实际型号:
class Unit(models.Model):
address = models.ForeignKey(Address)
name = models.CharField(max_length=500, verbose_name="Unit Name")
payments = GenericRelation("Payment", content_type_field='content_type', object_id_field='object_pk')
permissions = GenericRelation("CustomPermission", content_type_field='content_type', object_id_field='object_pk')
association = models.ForeignKey(Association, blank=True, null=True)
def __unicode__(self):
return self.name
“association”是我想移动到另一个模型的字段。
答案 0 :(得分:0)
我猜您应该使用abstract = True
https://docs.djangoproject.com/en/1.10/topics/db/models/#abstract-base-classes
class MyModel(models.Model):
field1 =...
field2=...
field3=...
class Meta:
abstract = True
class MyModel2(MyModel):
field4=...
class AssociationBase(models.Model):
association = models.ForeignKey(Association, blank=True, null=True)
class Meta:
abstract = True
class Unit(AssociationBase):
address = models.ForeignKey(Address)
name = models.CharField(max_length=500, verbose_name="Unit Name")
payments = GenericRelation("Payment", content_type_field='content_type', object_id_field='object_pk')
permissions = GenericRelation("CustomPermission", content_type_field='content_type', object_id_field='object_pk')
def __unicode__(self):
return self.name