更新
在调试模式下短暂运行应用程序...保存时它给了我以下信息:
ProgrammingError at /admin/auth/user/4/change/
syntax error at or near "ON"
LINE 1: ...ser_groups" ("user_id", "group_id") VALUES (4, 5) ON CONFLIC...
查了一下相关的故障,果然是把PostgreSQL从9.2更新到最新版本的问题……
更新
为什么我找不到如何将用户分配到组,从终端为用户/组分配默认权限?从逻辑上讲,这将是解决这个问题的某种解决方案……并不完美,但至少是某种解决方案?
好吧,我想我可以通过 sql 查询在数据库本身中做到这一点......
如果我尝试将用户分配给组或将权限分配给组或用户,则会出现 500 服务器错误故障。
我有以下models.py,它位于:/home/e/sc_project/sc 它是自动生成的,它告诉我数据库中每个表的以下消息:
This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
# * Rearrange models' order
# * Make sure each model has one field with primary_key=True
# * Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior
# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models
# Unable to inspect table 'auth_group'
# The error was: syntax error at or near "WITH ORDINALITY"
LINE 6: FROM unnest(c.conkey) WITH ORDINALITY co...
^
# Unable to inspect table 'auth_group_permissions'
# The error was: syntax error at or near "WITH ORDINALITY"
LINE 6: FROM unnest(c.conkey) WITH ORDINALITY co...
^
等等......那是因为我有 9.2 PostgreSQL 数据库(?)......它能给我权限问题吗?如果是这样,有什么解决方法吗?我无法更新到更高版本的 PostgreSQL,因为 c-panel 不支持更高版本,这意味着我只能使用 psql 访问数据,这不如通过 c-panel 好...
该系统在本地服务器(PostgreSQL 12)上运行良好,但在由 nginx+gunicorn 运行的基于 centos 7 的远程服务器上失败。
我是否有可能必须打开 gunicorn 的权限文件夹?我没有看到任何明确的答案。gunicorn 本身的权限有答案,但文件夹的权限没有答案。到目前为止,这只是我的疯狂猜测,基于静态或媒体文件的相同方法。但它真的没有给我任何关于 journalctl -u gunicorn 命令的错误消息。
除此之外......我检查了我的models.py,它与PostgreSQL数据库完全相关。根据 Django 手册,我不必创建标准权限,如创建、删除、查看它们由“django.contrib.auth”处理。
在 settings.py 中,我在 INSTALLED_APPS 中有“django.contrib.auth”。据我了解,它应该自动处理多对多关系的用户、组、权限。
我有 django 版本 3.1.1,所以它是最新的。所以这里应该没有问题。
还能是什么?
所有用户和组在创建、删除时都没有给我任何错误...所有模型都已导入。这是我的 models.py 文件:
class AuthGroup(models.Model):
name = models.CharField(unique=True, max_length=150)
class Meta:
managed = False
db_table = 'auth_group'
class AuthGroupPermissions(models.Model):
group = models.ForeignKey(AuthGroup, models.DO_NOTHING)
permission = models.ForeignKey('AuthPermission', models.DO_NOTHING)
class Meta:
managed = False
db_table = 'auth_group_permissions'
unique_together = (('group', 'permission'),)
class AuthPermission(models.Model):
name = models.CharField(max_length=255)
content_type = models.ForeignKey('DjangoContentType', models.DO_NOTHING)
codename = models.CharField(max_length=100)
class Meta:
managed = False
db_table = 'auth_permission'
unique_together = (('content_type', 'codename'),)
class AuthUser(models.Model):
password = models.CharField(max_length=128)
last_login = models.DateTimeField(blank=True, null=True)
is_superuser = models.BooleanField()
username = models.CharField(unique=True, max_length=150)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=150)
email = models.CharField(max_length=254)
is_staff = models.BooleanField()
is_active = models.BooleanField()
date_joined = models.DateTimeField()
class Meta:
managed = False
db_table = 'auth_user'
class AuthUserGroups(models.Model):
user = models.ForeignKey(AuthUser, models.DO_NOTHING)
group = models.ForeignKey(AuthGroup, models.DO_NOTHING)
class Meta:
managed = False
db_table = 'auth_user_groups'
unique_together = (('user', 'group'),)
class AuthUserUserPermissions(models.Model):
user = models.ForeignKey(AuthUser, models.DO_NOTHING)
permission = models.ForeignKey(AuthPermission, models.DO_NOTHING)
class Meta:
managed = False
db_table = 'auth_user_user_permissions'
unique_together = (('user', 'permission'),)
在我的 admin.py 中,我没有上述任何表格,但据我所知,在创建项目时它们已经被自动处理。
我的 PostreSQL 数据库如下所示: 每个表都有:
--Columns
---list of columns
--Browse
---!Error Loading display.php&subject=table&server=...Allow&database=sc_sc&schema=public&action=tree&table=auth_group(200:OK)
--Indexes
---gives me indexes of PKs and unique keys
--Constraints
---gives me constraints
--Triggers
---No objects found (I didn't use triggers)
--Rules
---No objects found (Same)
--Admin
--Info
--Privileges
--Import
--Export
数据库中每个表的标准都差不多。