我是Django的新手,我在为这个特殊问题创建合适的模型时遇到了麻烦。
我有用户,他们拥有“钱包”。这个钱包应该是一个货币/值列表。
货币位于只有“名称”字段的表格中。 ID:1姓名:EUR
我希望我的钱包如下:货币:欧元,价值:0,货币:美元,价值:1000
为此,我通常使用另一张桌子的三元组,比如说平衡。余额如何:钱包ID:1,货币ID:1,价值:50
我想在这里做正确的事情,我不太清楚如何继续。
由于
答案 0 :(得分:2)
Class Wallet(models.Model):
# if a user has only one wallet
user = models.OneToOneField('User')
# if a user has multiple wallets
# user = models.ForeignKey('User')
class Balance(models.Model):
currency = models.CharField(max_length=10)
value = models.DecimalField()
wallet = models.ForeignKey('Wallet')
# to get a user's wallet:
user_wallet = user.wallet
# get all balances
user_balance = user.wallet.balance_set.all()
修改强>
currency
本身并不一定是模型,因为那里没有那么多货币。您还可以在查询时避免加入其他表。请改用choices
上的CharField
:
CURRENCIES = (
(u'USD', u'US Dollars'),
(u'EUR', u'Euro'),
# ...
)
currency = models.CharField(max_length=3, choices=CURRENCIES)
但是,如果你有很多货币,可以选择一个模型。
如果您在OneOnOne
和Wallet
之间使用User
关系,那么它在哪里无关紧要。但是如果你有一个用户的多个钱包,我认为你应该找出user
中Wallet
的原因,对吧?