我有一个模型,并且希望系统的每个用户都有一个为自己保留的表,尊重这个模型。
说清楚:
想象一下模型“游戏”。 我不希望只有一个表“游戏”,但有: foo_games,bar_games(foo / bar是系统的用户)
怎么做?
编辑:
为什么?
想象一下,我有1000个用户,每个用户有100个游戏。
你认为你有1000 * 100项目的桌子比1000桌子每桌100件更好吗?
答案 0 :(得分:11)
通常使用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)
修改
回答有关更多行与更多表的问题:关系数据库服务器经过优化,可在单个表中拥有巨大的行容量。使用示例查询,1000 * 100只有100,000条记录,这可能只是表理论上可容纳的值的0.01%(服务器内存和存储空间)。