mysql – Django admin – 模型对超级用户可见,而不是员工用户
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – Django admin – 模型对超级用户可见,而不是员工用户,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2164字,纯文字阅读大概需要4分钟。
内容图文
![mysql – Django admin – 模型对超级用户可见,而不是员工用户](/upload/InfoBanner/zyjiaocheng/911/66b3de23d0824536b730c3d8e3ff70ec.jpg)
我知道syncdb和makemigrations,但我们只能在生产环境中这样做.
我们最近在生产中创建了几个表.正如预期的那样,管理员无法在任何用户上看到表格.
发布,我们在生产sql上手动执行了以下2个查询(我在本地运行迁移并显示创建表查询以获取原始sql)
django_content_type
INSERT INTO django_content_type(name, app_label, model)
values ('linked_urls',"urls", 'linked_urls');
auth_permission
INSERT INTO auth_permission (name, content_type_id, codename)
values
('Can add linked_urls Table', (SELECT id FROM django_content_type where model='linked_urls' limit 1) ,'add_linked_urls'),
('Can change linked_urls Table', (SELECT id FROM django_content_type where model='linked_urls' limit 1) ,'change_linked_urls'),
('Can delete linked_urls Table', (SELECT id FROM django_content_type where model='linked_urls' limit 1) ,'delete_linked_urls');
现在,这个模型在超级用户下可见,并且能够授予员工用户访问权限,但是员工用户无法看到它.
是否需要输入任何表条目?
或者有没有其他方法可以在没有syncdb,迁移的情况下解决此问题?
解决方法:
We recently had couple of tables created on production.
我可以通过两种方式阅读你在那里写的内容.
第一种方式:您使用SQL语句创建了表,Django中没有相应的模型.如果是这种情况,那么任何会使Django突然使用这些表的内容类型和权限都无法摆弄.您需要为表创建模型.也许他们会成为unmanaged,但他们需要存在.
第二种方式:Django中相应的模型确实存在,你只需为它们手动创建表,这样就没问题了.在这种情况下我要做的是运行以下代码,代码后面的解释如下:
from django.contrib.contenttypes.management import update_contenttypes
from django.apps import apps as configured_apps
from django.contrib.auth.management import create_permissions
for app in configured_apps.get_app_configs():
update_contenttypes(app, interactive=True, verbosity=0)
for app in configured_apps.get_app_configs():
create_permissions(app, verbosity=0)
上面的代码基本上是执行Django运行迁移后执行的工作.当迁移发生时,Django只需根据需要创建表,然后在完成后调用update_contenttypes,它会扫描与项目中定义的模型相关联的表,并将django_content_type表添加到需要添加的内容中.然后,它调用create_permissions以使用需要添加的添加/更改/删除权限更新auth_permissions.我已经使用上面的代码来强制在during a migration年初创建权限.例如,如果我有数据迁移,那么它会创建需要引用新权限的组.
内容总结
以上是互联网集市为您收集整理的mysql – Django admin – 模型对超级用户可见,而不是员工用户全部内容,希望文章能够帮你解决mysql – Django admin – 模型对超级用户可见,而不是员工用户所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。