Django custom model admin получение текущего запроса в методе get_urls

Я пытаюсь реализовать на django solo вид пользовательской модели админки, где каждый пользователь имеет свой собственный объект solo для изменения. Таким образом, идентификатор объекта должен меняться, когда пользователь входит в панель администратора. Представление изменений работает нормально, но после изменения поля & save, оно не сохраняет изменения. Ниже приведен код моей пользовательской ModelAdmin -

class DatabaseSessionModelAdmin(admin.ModelAdmin):
    form = DatabaseSessionForm

    def get_queryset(self, request):
        return self.model.objects.filter(user=request.user)

    def has_add_permission(self, request):
        return False

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

    def get_urls(self):
        urls = super(DatabaseSessionModelAdmin, self).get_urls()

        if not settings.DB_ADMIN_SKIP_OBJECT_LIST_PAGE:
            return urls
        try:
            model_name = self.model._meta.model_name
        except AttributeError:
            model_name = self.model._meta.module_name.lower()
        self.model._meta.verbose_name_plural = self.model._meta.verbose_name
        url_name_prefix = '%(app_name)s_%(model_name)s' % {
            'app_name': self.model._meta.app_label,
            'model_name': model_name,
        }
        custom_urls = [
            re_path(r'^$',
                    self.admin_site.admin_view(self.change_view),
                    # {'object_id': str(self.singleton_instance_id)},
                    name='%s_change' % url_name_prefix),
        ]
        return custom_urls + urls

    def response_change(self, request, obj):
        msg = _('%(obj)s was changed successfully.') % {
            'obj': force_str(obj)}
        if '_continue' in request.POST:
            self.message_user(request, msg + ' ' +
                              _('You may edit it again below.'))
            return HttpResponseRedirect(request.path)
        else:
            self.message_user(request, msg)
            return HttpResponseRedirect("../../")

    def change_view(self, request, object_id=None, form_url=None, extra_context=None):
        object_id = DatabaseSession.objects.filter(user=request.user).first().id

        if not extra_context:
            extra_context = dict()
        extra_context['skip_object_list_page'] = True

        return super(DatabaseSessionModelAdmin, self).change_view(
            request,
            str(object_id),
            form_url=form_url,
            extra_context=extra_context,
        )

    def history_view(self, request, object_id, extra_context=None):
        object_id = DatabaseSession.objects.filter(user=request.user).first().id

        if not extra_context:
            extra_context = dict()
        extra_context['skip_object_list_page'] = settings.DB_ADMIN_SKIP_OBJECT_LIST_PAGE

        return super(DatabaseSessionModelAdmin, self).history_view(
            request,
            str(object_id),
            extra_context=extra_context,
        )

Итак, я пытался решить это многими способами, но ничего не помогает. Я думал, что если я смогу получить текущего пользователя или запрос в методе get_urls, это может привести к решению. Я пробовал crum libray, django-current-user, даже реализовал свой собственный middleware, но все безуспешно. Пожалуйста, помогите мне решить эту проблему или подскажите какие-нибудь обходные пути. Заранее спасибо.

Вернуться на верх