首页 > 解决方案 > 在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 并编写了自定义用户模型。

标签: djangodjango-models

解决方案


你真的不需要单独的,只需要单独的

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()

推荐阅读