设计型的结构对于django
-
05-07-2019 - |
题
我想设计一个模型应用程序,允许2人赌彼(我知道听起来很愚蠢...).我想知道是怎么连接的赌注,与用户。该结构是这样的
|-------------| |----------|
| Bet | | User |
| BetUser1 | |----------|
| BetUser2 |
| Winner |
| ... |
|-------------|
所以我们得到了2人,打赌与每一个其他的(都是 Users
从django认证系统)和然后,他们中的一个胜利,是一个赢家。现在所有这3个领域的类型 User
, ,但是:
- 我应该让BetUser1和BetUser2单独领域,或设计一些多对两个的关系在这里?(与许多向两个正在许多对多,并与一些外部方法,确保不超过2
Users
可以分配给每个赌注吗? - 赢家只能是用户1或2的用户,没有人别的课程。我应该如何创建这一领域,而另一个
ForeignKey(User)
, 或一些其他的吗?
只是在寻找一些新鲜的观点,因为它似乎在这种愚蠢的种情况下,我坚持django模型系统。
解决方案
我可能会添加一个第三种模式来表示某一特定打赌有人放,因为它可以想象的是,多于两个人可以输入进一个赌。它看起来像这样的东西:
USER WAGER BET
User (FK(User)) Description
Bet (FK(Bet)) Winner (FK (Wager), null=True)
Amount
Django会自动生成 user.wager_set
和 bet.wager_set
基于外键。这可以让你轻松迭代和显示赌一赌注,以及作为赌注,从每个用户。你还可以添加一个 unique_together
制约因素 User
和 Bet
在赌桌,以便每个用户都可以仅仅让一个赌注。
当赌注是所有做,以及一个胜利者已经选择,你只需要设置 bet.winner
.
在情况下你碰它,你可能会看到一个警告 related_name
通过具有 Bet
点到 Wager
和 Wager
点到 Bet
.修复,只是添加 related_name=wagers
要 Wager.bet
.
其他提示
不隶属于 StackOverflow