Ошибка неверного имени столбца при попытке удалить экземпляр модели - PullRequest
0 голосов
/ 01 ноября 2019

Немного контекста: у меня есть сайт Django, где я только что переписал стандартный проект модели пользователя по умолчанию. Похоже, что он работает для всего, кроме на странице администратора, если я пытаюсь удалить экземпляр пользователя, он выдает ошибку Invalid column name 'ouser_id'.

Я попытался удалить автоматически созданную функцию удаления на сайте администратора, идобавив свой собственный как действие, но это не сработало.

models.py

class OUser(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(verbose_name='email address', max_length=255, unique=True)
    username = models.CharField(max_length=150, unique=True)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False) # a superuser

    first_name = models.CharField(max_length=100, blank=True, default='')
    last_name = models.CharField(max_length=100, blank=True, default='')
    date_joined = models.DateField(auto_now=True)
    password = models.CharField(max_length=100)

    REQUIRED_FIELDS = [] # Email & Password are required by default.
    USERNAME_FIELD = 'username'
    def __str__(self):
        return self.username

    def has_perm(self, perm, obj=None):
        "Does the user have a specific permission?"
        # Simplest possible answer: Yes, always
        return True

    def has_module_perms(self, app_label):
        "Does the user have permissions to view the app `app_label`?"
        # Simplest possible answer: Yes, always
        return True

admin.py

class OUserAdmin(BaseUserAdmin):
    # The forms to add and change user instances
    form = UserAdminChangeForm
    add_form = UserAdminCreationForm
    actions = [deleteOUser, setStaff, setNotStaff, setSuperuser, setNotSuperuser, setActive, setInactive, addUsersToIAS_Infra, addUsersToBDA_Team, addUsersToPerformance_Team, addUsersToIAS_BUS, addUsersToITS_Team, addUsersToInvestment_Operations, addUsersToInvestment_Advisors]

    # The fields to be used in displaying the User model.
    # These override the definitions on the base UserAdmin
    # that reference specific fields on auth.User.
    fieldsets = (
        ('Personal info', {'fields': ('first_name', 'last_name', 'email',)}),
        ('Permissions', {'fields': ('is_superuser', 'is_active', 'is_staff',)}),
    )
    # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
    # overrides get_fieldsets to use this attribute when creating a user.
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username',)}
        ),
    )
    search_fields = ('username',)
    ordering = ('username',)
    filter_horizontal = ()
    list_filter = ('is_superuser',)

    def has_delete_permission(self, request, obj=None):
        return False

Кажется, это объединение имени модели и идентификатора, что приводит к ошибке, потому что нет такого поля. Кто-нибудь знает почему или как я могу это исправить?

1 Ответ

0 голосов
/ 01 ноября 2019

У меня была таблица ouser_user_permissions, которая имела ошибочный внешний ключ. Я исправил это, и это сработало

...