繁体   English   中英

Django中的模型和数据库视图

[英]Models and database views in django

我正在为数据库设置django模型,当前我的方法是直接将数据库表映射到Models。 但是,在某些情况下,我实际上需要使用相对复杂的视图。 一种特殊情况是我有一个表(在报表中,而不是数据库中),该表需要显示相关数据库表中的合并列表:

class Entity(Models):
    name = CharField()

class LargeEntity(Entity):
    size = FloatField()

class SmallEntity(Entity):
    type = ForeignKey(SmallEntityType)

报告(和表格)需要显示:

Entity name - entity.name
Large/Small - 'Large' if entity is LargeEntity else 'Small'
size/type   - entity.size if entity is LargeEntity else 'type'

这可以通过SQL中的CASE语句完成,但是由于这种情况在我的数据中经常发生,所以我宁愿找到一个更整洁的解决方案。

不能选择更改报告格式,但是如果有更好的实现方法,则可以更改数据库。

如果每种实体类型不包含很多属性,则可以创建一个具有所有必填字段的模型,并在该模型中创建一个或多个字段,以按类型或其他方式将实体彼此区分开:

class Entity(Models):
    NORMAL, LARGE, SMALL = 0, 1, 2
    ETYPE = (
        (NORMAL, 'Normal'),
        (LARGE, 'Large'),
        (SMALL, 'Small'),
    )
    entity_type = IntegerField(choices=ETYPE,...)

    name = CharField()
    size = FloatField()
    smalltype = ForeignKey(SmallEntityType)
    ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM