Некоторая модель с ID "xx" не существует. Возможно, она была удалена?

Я не могу получить доступ к странице изменений с ID, хотя она существует в БД, в определенной учетной записи Django, но я могу получить доступ к ней в учетной записи администратора. Я проверил все разрешения и они кажутся в порядке, только вот я получаю эту ошибку :

enter image description here

Но когда я перехожу по этому URL (тот же URL) в админке ниже, он работает очень хорошо:

http://localhost:8000/en/admin/accounts/cooperationpartner/25/change/

Интересно, что вызывает эту проблему, хотя Id существует в БД.

Модель для CooperationEmployee :

class CooperationEmployee(models.Model):
    cooperation_employee_id = models.CharField(
    _('Cooperation Employee ID'), max_length=64, blank=True, null=True)
    international_prefix = CountryField(
        _('International prefix'), null=True, blank=True)
    phone_number = models.CharField(_('Telephone Nr'), max_length=20)
    branch = models.CharField(
        _('Relevant branch'), max_length=50, blank=True, 

null=True)
email_user = models.OneToOneField(
        EmailUser, on_delete=models.CASCADE,
        related_name='cooperation_employee_profile',
        verbose_name=_('Email user'))

Моя БД показывает следующее, ID доступен (Postgres) :

enter image description here

На странице администратора для CooperationEmployee есть следующее :

def has_change_permission(self, request, obj=None):
        """Permissions to change account settings."""
        if request.user.role == ROLE_COOPERATION_EMPLOYEE:
            return True
        return False

Роль ROLE_COOPERATION_EMPLOYEE предназначена для модели выше.

EDIT :

Это queryset :

user_id = EmailUser.objects.get(id=request.user.id).id

Модель для EmailUser :

class EmailUser(AbstractBaseUser, PermissionsMixin):

    email = models.EmailField(_('Email'), unique=True)
    first_name = models.CharField(_('First Name'), max_length=64)
    last_name = models.CharField(_('Last Name'), max_length=64)
    role = models.CharField(
        _('Role'), max_length=2, choices=ROLE_CHOICES, null=True, blank=True)

Итак, полный код маршрутизации выглядит следующим образом :

class CooperationPartnerGenericChangeView(ListAPIView):

  
    def list(self, request, *args, **kwargs):
       
        
        url = 'adminsite:accounts_cooperationemployee_change'
        user_id = EmailUser.objects.get(id=request.user.id).id

        return HttpResponseRedirect(
            reverse(url, kwargs={'object_id': user_id}) + '?edit=1')

примечание:

Это обратный url adminsite:accounts_cooperationemployee_change. для http://localhost:8000/en/admin/accounts/cooperationpartner/25/change/

Есть несколько моментов, которые я хотел бы рассмотреть, но которые не помещаются в комментарии:

  1. Вы используете list представление одной модели для перенаправления на представление изменения той же модели, используя id из другой модели. Это все, что делает представление списка, согласно этому фрагменту.
  2. Этот кверисет не является тем местом, где происходит ошибка. Это также кажется избыточным - вы используете id текущего пользователя для получения EmailUser по id, а затем передаете id возвращаемого объекта другому представлению. Вы могли бы просто передать request.user.id. Но как вы можете быть уверены, что идентификаторы объектов EmailUser и CooperationEmployee совпадут?
  3. Похоже, что ошибка возникает в представлении, на которое вы перенаправляетесь, и там есть соответствующий набор запросов, который нужно проверить.
Вернуться на верх