我正在尝试为一个应用程序设计一个模型,该模型允许2个人进行彼此下注(我知道,听起来很蠢...)。我想知道的是如何将赌注与用户联系起来。结构是这样的
|-------------| |----------|
| Bet | | User |
| BetUser1 | |----------|
| BetUser2 |
| Winner |
| ... |
|-------------|
因此,我们有2个人互相下注(都是django auth系统的
Users
),然后,在其中一位赢得比赛之后,就有了赢家。现在,所有这三个字段的类型均为User
,但是:Users
?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
。这使您可以轻松地迭代和显示下注的赌注,以及每个用户的赌注。您还可以在Wager表中的unique_together
和User
上添加Bet
约束,以便每个用户只能下一个赌注。当下注全部完成并且选择了赢家后,您只需设置
bet.winner
即可。万一遇到它,您可能会看到有关
related_name
的警告,方法是让Bet
指向Wager
,而Wager
指向Bet
。要解决此问题,只需将related_name=wagers
添加到Wager.bet
即可。关于django - 为Django设计模型结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/253286/