Django管理员。授予用户或组权限并保存时,我有500个服务器错误

Django管理员。授予用户或组权限并保存时,我有500个服务器错误,django,django-admin,django-admin-actions,Django,Django Admin,Django Admin Actions,更新 在调试模式下短暂运行应用程序。。。在保存时,它给了我以下信息: 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更新

更新

在调试模式下短暂运行应用程序。。。在保存时,它给了我以下信息:

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服务器错误错误

我有以下型号。py,在: /主页/电子/sc_项目/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中,我在已安装的应用程序中安装了“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

对于数据库中的每个表来说,这几乎都是标准的。

好吧,毕竟。。。我相信

如果由于PostgreSQL、Django和cpanel版本之间的冲突而出现类似的错误。。。您可以使用数据库本身中的sql查询添加默认权限并将用户分配给组

您可以做sql脚本,它不会比通过网站的管理端慢,如果不是更快

如果有其他想法,请让我知道

多谢各位