我有一个模型,并希望系统的每个用户都有一个为自己保留的表,尊重这个模型。
为了明确起见:
想象一下“游戏”模型。
我不希望只有一张桌子“游戏”,但是有:
foo_games, bar_games (foo / bar 是系统的用户)
这个怎么做 ?
edit:
why ?
假设我有 1000 个用户,每个用户有 100 个游戏。
您认为一张包含 1000 * 100 个项目的表比拥有 1000 个表(每个表包含 100 个项目)更好吗?
Django ORM 处理此问题的典型方法是使用外键将两个模型(表)链接在一起。然后,您可以使用 .filter() 方法仅获取适用于用户的记录。这样看起来每个用户都有自己的表。例如...
from django.contrib.auth.models import User
from django.db import models
class Game(models.Model):
name = models.CharField(max_length=50)
owner = models.ForeignKey(User)
这里的ForeignKey字段提供了一个将1个游戏记录与特定用户相关联的“链接”。
当您想要检索仅适用于 1 个用户的游戏时,您可以这样做:
# Select whichever user you want to (any of these work)
user = User.objects.get(username='admin')
user = User.objects.get(id=64)
user = request.user
# Then filter by that user
user_games = Game.objects.filter(owner=user)
Edit --
要回答有关更多行与更多表的问题:关系数据库服务器经过优化,可以在单个表中拥有巨大的行容量。对于您的示例查询,1000 * 100 只是 100,000 条记录,这可能只是表理论上可以容纳的内容的 0.01%(不考虑服务器内存和存储)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)