我正在开发一个项目,该项目要求我使用该用户的用户名创建一个在网站上注册的每个用户的表.表中的列对于每个用户都是相同的.
在研究时我发现了这个Django dynamic model fields.我不知道如何使用django-mutant来实现这个目标.另外,有没有办法在不使用任何外部应用程序的情况下执行此操作?
PS:我使用的后端是MysqL
最佳答案
一个有趣的问题,可能会引起更广泛的兴趣.
原文链接:https://www.f2er.com/mysql/433476.html为每个用户创建一个表是维护的噩梦.您应该定义一个表来保存所有用户的数据,然后使用数据库的功能仅检索与感兴趣的用户相关的那些行(如果需要,在检查权限之后,因为给任何用户不受限制不是一个好主意访问其他用户的数据,但未设置特定权限).
采用您提出的解决方案需要您构造包含相关用户的表名的sql语句.对数据库的连续查询通常会有所不同,这会减慢工作量,因为每个sql语句都必须“准备好”(必须检查语法,必须验证表和列的名称,请求用户的权限)必须授权访问命名资源,等等.
通过使用单个表(模型),可以重复使用相同的查询,其中参数用于改变特定数据值(在这种情况下是正在搜索其数据的用户的名称).您的数据库工作将更快地进行,您只需要一个模型来描述所有用户的数据,并且数据库管理不会是一场噩梦.
另一个优点是Django(您似乎正在使用)具有广泛的基于用户的权限模型,并且可以轻松地用于验证用户登录(一旦您知道如何).这些优点非常引人注目,我希望你能从你的异端中退出,并决定你可以使用单个表(并且,如果你计划使用标准的Django登录,那么与用户模型的关系,作为任何Django的核心部分)项目).
在您继续操作时,请随时提出更多问题.您似乎对数据库工作不熟悉,因此我尝试提供适当级别的详细信息.如果您无法访问知识渊博的建议,则存在许多此类陷阱. SO上的人会帮助你.