在Django类中使用对象集合是否可行
我正在尝试用很多类来实现一个金融应用程序(关于Java的)。我有这样的情况:
class User {
String name;
Int age;
Collection<Accounts> accounts;
接口:账户
然后以下类实现了这个接口:
- 储蓄账户
- 定期账户
- 保险账户
每个账户都会有一个用户对象。
因为我主要用Java,所以我想知道我能否在我的用户类中使用账户对象的集合。
另外,如果我使用集合,Django会如何处理这些关系并创建数据库表呢?
1 个回答
1
你可能想用 django.contrib.auth
,因为它已经提供了一个 User
模型。所以你应该写一个模型来 存储额外的用户信息,而不是重新定义一个新的 User
模型。Django 的模型通常代表数据库中的表,每个属性对应数据库中的一个字段。你定义你的模型和它们之间的关系,Django 会提供一个很方便的数据库访问接口。通常你不会“存储一堆 Account 对象”,而是创建另一个模型,并使用 ForeignKey
字段来描述模型之间的关系。
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
age = models.IntegerField()
class Account(models.Model):
user_profile = models.ForeignKey('UserProfile')
然后你可以使用 Django 的 API 来操作你的模型:
profile = User.objects.get(id=1).get_profile() # get user's profile
profile.account_set.all() # get all accounts associated with user's profile
acct = Account() # create a new account
profile.account_set.add(acct) # add a new account to the user's profile
Django 的教程 是一个很好的起点,如果你想在这个项目中使用 Django,你需要了解一些基本概念。先 学习 Python 也是个不错的主意。