python - 继承模型更新为其父模型

我需要从另一个模型扩展一个模型。
案例:
核心/型号.py

class Master(models.Model):
    code = models.CharField(max_length=30, unique=True)
    name = models.CharField(max_length=100, blank=False, null=False)

    class Meta:
        abstract = True

class City(Master):
        zipcode = models.IntegerField()

自定义/模型.py
from core.models import City
class City(City)
    newfield = models.CharField(max_length=20)

自定义是一个应用程序。
我试过使用代理模型,但这不是我所需要的,因为代理模型添加了一个新表。https://docs.djangoproject.com/en/2.2/topics/db/models/#proxy-models
我需要的是,当我迁移添加新的领域到城市。
更多信息。
在core中创建表,在custom中可以添加客户机需要的新字段核心只是作为标准来维护的。

最佳答案

代理模型不添加新表。从docs link you mentioned开始:
MyPerson类与其父Person类在同一数据库表上操作。
如果您想要一个名为core_city的表,另一个名为custom_city的表,第二个表有一个额外的字段,您只需将其子类化。也许使用别名更容易:

from core.models import City as CoreCity

class City(CoreCity):
    newfield = models.CharField(max_length=20)

custom_city将包含core_city中的所有字段,外加一个newfielddocs部分Multi-table inheritance中介绍了这种方法的工作原理(以及一个示例)。
如果您希望只有一个数据库表,那么您应该使用代理模型,但是它们确实不允许您创建新字段。字段应在父模型中创建,否则将存在于数据库中,而不会被Django迁移处理。

本文翻译自 https://stackoverflow.com/questions/57593894/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 python django django-inheritance


相关文章:

python - 我可以将Cython代码转换为Python吗?

python - 在Django Python中使用现有数据库

python - 使用单个数据库表的Django模型继承-从超类访问子类的问题

python - Django-Imagekit不创建缩略图

python - 具有模型继承的Django索引

python - 帮助Python新手解决Django模型继承问题

python - 如何将输出文件从Django保存到Amazon S3

python - 在SQLAlchemy中将列设为“不可变”

python - ElasticSearch GeoDistance查询

python - 基于代码的唯一约束Django模型