【发布时间】:2014-07-22 21:25:47
【问题描述】:
我为一个在线游戏编写了一个任务系统。我的任务被序列化为 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,它们通过foreign Key field 链接到一个任务。
为了将这些信息组合回任务,我创建了一个纯 Python class Quest(object): 并在此类上定义了方法,例如 check_quest_completion。这个类是后来序列化的。这种方法的问题是它变得非常冗长,例如当我实例化这个类或定义序列化器时。
是否有 python 或 django“快捷方式”将 django model 的所有字段放入另一个类(我的 Quest 类在这里),可能类似于 dict.update 方法?
或者我应该尝试将方法放在models 上,然后去掉Quest class?
我的游戏中有一些其他地方看起来与任务系统非常相似,例如库存系统,所以我希望有一个更优雅的解决方案。
【问题讨论】:
标签: python django oop django-models