我正在尝试为应用程序设计一个模型,允许2个人互相打赌(我知道,这听起来很愚蠢......)。我想知道的是如何将赌注与用户联系起来。结构就像这样
|-------------| |----------|
| Bet | | User |
| BetUser1 | |----------|
| BetUser2 |
| Winner |
| ... |
|-------------|
所以我们有两个人互相打赌(两者都是来自django auth系统的Users
)然后,在他们中的一个获胜之后,就会有一个胜利者。现在所有这3个字段都是User
类型,但是:
Users
?ForeignKey(User)
或其他?只是寻找一些新的观点,因为在这种愚蠢的情况下我似乎坚持使用django模型系统。
答案 0 :(得分:4)
我可能会添加第三个模型来代表某人放置的特定赌注,因为可以想象有两个以上的人可以进行赌注。它看起来像这样:
USER WAGER BET
User (FK(User)) Description
Bet (FK(Bet)) Winner (FK (Wager), null=True)
Amount
Django将根据外键自动生成user.wager_set
和bet.wager_set
。这使您可以轻松地迭代并显示投注的投注,以及每个用户的投注。您还可以在Wager表中的unique_together
和User
上添加Bet
约束,以便每个用户只能进行一次下注。
当投注全部完成并且选择了获胜者后,您只需设置bet.winner
。
如果您遇到此问题,您可能会在related_name
指向Bet
而Wager
指向Wager
时看到有关Bet
的警告。要解决此问题,只需将related_name=wagers
添加到Wager.bet
。
答案 1 :(得分:1)