Python 德扬戈。具有有限域集的代理模型

Python 德扬戈。具有有限域集的代理模型,python,mysql,django,django-models,Python,Mysql,Django,Django Models,主力矩数据库方案不是从头开始设计的。它是从遗留系统继承的,必须保持目前的状态,因为它还与一些外部系统共享。因此,我们有: class A(models.Model): """ List of 110 fields """ field_1 = models.CharField() field_... = models.CharField() field_n = models.CharField() 有没有办法拥有模型B,它将是代理模型,并且具有有

主力矩数据库方案不是从头开始设计的。它是从遗留系统继承的,必须保持目前的状态,因为它还与一些外部系统共享。因此,我们有:

class A(models.Model): 
    """
    List of 110 fields
    """
    field_1 = models.CharField()
    field_... = models.CharField()
    field_n = models.CharField()
有没有办法拥有模型B,它将是代理模型,并且具有有限的字段集

比如:

class B(A):
    class Meta: 
        proxy = True
    field_3 = models.CharField()
    field_5 = models.CharField()
    field_10 = models.CharField()
我目前想到的唯一解决方案是创建一些非托管模型。但代理模型更适合这一目标。。还是不?

根据该报告,代理模型不是您想要的

因此,一般规则是:

如果您正在镜像现有模型或数据库表,并且没有 要获得所有原始数据库表列,请使用Meta.managed=False。 该选项通常用于对数据库视图和表进行建模 不在Django的控制之下

如果您想更改 Python仅支持模型的行为,但保留与中相同的所有字段 原始版本,使用Meta.proxy=True。这样就可以使 代理模型是原始存储结构的精确副本 保存数据时的模型


最好是在SQL中创建一个视图,只列出所需的字段,然后使用非托管表连接到该视图。

是的,这就是我完成的解决方案。谢谢