gpt4 book ai didi

python - Django 三元关系

转载 作者:行者123 更新时间:2023-12-01 04:10:19 25 4
gpt4 key购买 nike

我对 Django 还很陌生,在为这个特定问题创建正确的模型时遇到了困难。

我有用户,他们拥有一个“钱包”。该钱包应该是货币/值(value)的列表。

货币位于只有一个“名称”字段的表中。 ID:1 姓名:欧元

我希望我的钱包是这样的:货币:欧元,值(value):0,货币:美元,值(value):1000

为此,我通常将三元与另一个表(例如 Balance)一起使用。余额将包含:钱包 ID:1、货币 ID:1、值(value):50

我想在这里做正确的事情,但我不太确定如何继续。

谢谢

最佳答案

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 本身不必是一个模型,因为其中没有那么多货币。您还可以避免在查询时加入额外的表。在 CharField 上使用 choices 来代替:

CURRENCIES = (
(u'USD', u'US Dollars'),
(u'EUR', u'Euro'),
# ...
)

currency = models.CharField(max_length=3, choices=CURRENCIES)

但是,如果您有很多货币,请选择模型。

如果您在WalletUser之间使用OneOnOne关系,那么它在哪里并不重要。但是,如果您为一个用户拥有多个钱包,我认为您应该弄清楚为什么 user 位于 Wallet 中,对吗?

关于python - Django 三元关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35042813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com