【发布时间】:2012-03-20 11:55:07
【问题描述】:
我正在创建一个基于文本的浏览器游戏,需要一些关于 django 模型结构的建议。所有示例都来自同一个项目,因此假设您已从上到下阅读了所有问题,我不会重复相同的信息。
第一个问题
我有一个 auth 应用程序,其中包含用户个人资料(Player 模型),alliance 应用程序包含有关所有工会玩家加入的信息,medals 应用程序代表玩家和联盟的奖励。
用户和联盟都可以分配奖牌,因此其中一种选择是在链接到 Medal 的 Player 和 Alliance 模型中创建 M2M 字段。
另一个选项将使medals 应用程序可用于我的任何其他项目。这种方法包括在Medal 模型中使用泛型关系,该模型链接到Player 或Alliance。
哪种解决方案更像 django,或者我可以随心所欲地做吗?
第二个问题
会有一些任务供玩家完成。任务的场景差异很大,因此我需要某种方法来为每个任务编写独特的任务进度检查代码。
任务保存在包含奖励信息的数据库中(几乎相同)。我应该在哪里为每个任务编写唯一代码?也许我应该稍后添加一些字段并 eval() ?然后所有信息都将保存在数据库中。
此外,任务需要一些跟踪,例如,想象一个简单的任务是转到手动部分(只是为了确保玩家知道它在哪里)。然后我需要在某处注册玩家是否访问过手册页。我考虑在任务应用程序中创建另一个模型TaskTrackers。然后另一个问题出现了。如果我应该将 OneToOne 字段从 Player 添加到 TaskTrackers 或反之亦然?
总而言之,主要问题是我应该将 OneToOneFields/M2M 字段添加到用户配置文件模型还是将 OneToOneFields/Foreignes 从目标模型添加到用户模型?后者会使我的应用更可重用,但第一种方法可能更合乎逻辑。
等待答案。
【问题讨论】:
-
顺便说一句,如果您要使用 Django 身份验证,调用应用程序“auth”不是一个好主意。也叫
auth,两个同名的应用不太好(比如manage.py test auth)。
标签: database django django-models