django - 在Django中将一个表链接到每个用户
问题描述
我正在开发一个 Django 项目,我需要将一个表(模型)链接到每个用户。假设 MyTable_1 映射到 user_1 等等。
MyTable 的主键是一个 DateField,它包含从用户注册开始的连续日期。
MyTable_1 for User_1
|-----------|----------|-------------|-----------------|
| Date(PK) | food_ate | game_played | ran_today |
|-----------|----------|-------------|-----------------|
| 10/01/20 | rice | chess | Yes |
|-----------|----------|-------------|-----------------|
| 11/01/20 |sandwhich | tennis | No |
|-----------|----------|-------------|-----------------|
MyTable_2 for User_2
|-----------|----------|-------------|-----------------|
| Date(PK) | food_ate | game_played | ran_today |
|-----------|----------|-------------|-----------------|
| 16/03/19 | pizza | rugby | Yes |
|-----------|----------|-------------|-----------------|
| 17/03/19 | pasta | football | Yes |
|-----------|----------|-------------|-----------------|
And so on for every new user created. User logs in those information in MyTable.
我该如何实施?我正在使用 PostgreSQL 并编写了自定义用户模型。
解决方案
你真的不需要单独的表,只需要单独的行。
ForeignKey 关系可以解决问题,在你的 models.py 中是这样的:
# user model:
User(models.Model, ...):
first_name = models.CharField(...)
last_name = models.CharField(...)
...
# log model:
Log(models.Model):
user = models.ForeignKey(User, ...)
date = models.DateField(...)
food_ate = models.CharField(...)
game_played = models.CharField(...)
ran_today = models.CharField(...)
class Meta: unique_together = ('user', 'date',)
然后,在其他地方,您可以像这样访问用户的日志:
user = User.objects.get(id='the_user_id')
logs = user.logs.all()
推荐阅读
- c - 尝试使用 C 和矩阵显示 X,但有些不对劲
- r - 如何将一个列表中的 data.tables 合并为一个 data.table/data.frame
- python - Python 在与 ElementTree 的同一循环中获取 XML 的父值和子值
- c# - c# winform 如何替换代码 If-else not working
- javascript - 如何避免节点/快递中的全局变量
- datetime - 在 hive 中将 090216(字符串)转换为 16-FEB-09(日期)
- reactjs - 在 Apollo / GraphQL 中发生突变后如何更新缓存?
- pine-script - 有没有办法绘制超过 53 个条的标签?
- python - train_in_memory 的输入函数要求
- amazon-web-services - aws dynamodb 定价 - 我的账单是否已计入免费套餐?