主要时刻 - 数据库方案不是从头开始设计的。它是从遗留系统继承的,目前必须保留原样,因为它也与一些外部系统共享。所以我们有这样的:
class A(models.Model):
"""
List of 110 fields
"""
field_1 = models.CharField()
field_... = models.CharField()
field_n = models.CharField()
有什么办法可以拥有模型 B,它将是代理模型并且具有有限的字段集?
Like:
class B(A):
class Meta:
proxy = True
field_3 = models.CharField()
field_5 = models.CharField()
field_10 = models.CharField()
我目前想到的唯一解决方案是创建一些非托管模型。但代理模型对于这个目标来说看起来更好......或者不是?
根据docs https://docs.djangoproject.com/en/1.9/topics/db/models/#proxy-models,代理模型不是您正在寻找的
所以,一般规则是:
如果您正在镜像现有模型或数据库表但不这样做
想要所有原始数据库表列,请使用 Meta.management=False。
该选项通常对于建模数据库视图和表很有用
不受 Django 的控制。
如果您想更改
模型的仅限 Python 的行为,但保留与中相同的所有字段
原来,使用Meta.proxy=True。这使得事情变得这样
代理模型是原始存储结构的精确副本
保存数据时的模型。
最好的办法是在 SQL 中创建一个视图,仅列出您想要的字段,然后使用非托管表连接到它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)