[英]django models and OOP design
我寫了一個在線游戲的任務系統。 我的任務被序列化為JavaScript客戶端的json objects
,該JavaScript客戶端隨后從REST后端獲取這些任務(我使用django RestFramework)
現在,我想知道應該在哪個class
或django model
放置屬於數據的“行為”。
我存儲屬於幾個不同的模型一個任務的數據:一個model QuestHistory
:與models.Fields
像Boolean completed
,和Datetime started
,我把屬於特定用戶的信息(這也作為一個字段的用戶)。
然后,我有一個model QuestTemplate
:始終相同的部分,像quest_title
和quest_description
字段
我還有一個model Rewards
model Task and TaskHistory
以及model Task and TaskHistory
,它們與帶有foreign Key field
的任務鏈接。
為了將這些信息組合回quest,我創建了一個純python class Quest(object):
check_quest_completion
並在該類上定義了諸如check_quest_completion
類的方法。 此類隨后進行序列化。 這種方法的問題是,它變得非常冗長,例如,當我實例化此類或定義序列化器時。
是否存在將django model
所有字段放入另一個類(這里是我的Quest類)的python或Django“快捷方式”,也許類似於dict.update
方法?
還是我應該嘗試將方法放到models
並擺脫Quest class
?
我在游戲中還有其他一些地方與任務系統非常相似,例如庫存系統,因此我希望有一個更優雅的解決方案。
您應該將Quest類的方法放在模型本身上,並擺脫Quest類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.