簡體   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