[英]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.