django模型和OOP设计

时间:2014-07-22 21:25:48

标签: python django oop django-models

我写了一个在线游戏的任务系统。我的任务被序列化为json objects,用于JavaScript客户端,然后从REST后端获取这些任务(我使用django RestFramework)

现在我想知道classdjango model我应该采用"行为"属于数据。

我在几个单独的模型中存储了属于任务的数据: model QuestHistorymodels.Fields Boolean completedDatetime started,我将信息属于特定用户(也是字段用户)。

然后我有model QuestTemplate:始终相同的部分,quest_titlequest_description等字段

我还有model Rewardsmodel Task and TaskHistoryforeign Key field的任务相关联。

要将此信息组合回任务,我创建了一个纯python class Quest(object):,并在此类上定义了类似check_quest_completion的方法。这个类后来被序列化了。这种方法的问题在于它变得非常冗长,例如当我实例化这个类或我定义Serializer时。

是否有python或django"快捷方式"将django model的所有字段放入另一个类(我的Quest类),可能类似于dict.update方法?

或者我应该尝试将方法放在models上并摆脱Quest class

我的游戏中有一些其他地方看起来非常类似于任务系统,例如库存系统,所以我希望有一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

您应该将Quest类的方法放在模型本身上并删除Quest类。