Действия Django Admin не работают после переопределения первичного ключа модели

Я использую стандартный models.Model в Django. Я изменил свой первичный ключ на _id (mongo). После этого действия в Django Admin больше не работают. Например, когда я использую стандартное действие Django - Delete selected, ни один объект не найден через запрос. Однако, когда я редактирую или удаляю объекты вручную, никаких проблем не возникает. Есть ли способ исправить это?

Вы уверены, что хотите удалить выбранные компании? -> Резюме, объекты: None

selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME)

selected - это список строк, вам следует преобразовать его в bson.ObjectId.

Так queryset = queryset.filter(pk__in=selected) получит правильный результат.

Также вы можете переопределить функцию def response_action(self, request, queryset): класса admin.Model, чтобы отредактировать код следующим образом:

            selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME)
            try:
                from bson import ObjectId
                selected = [ObjectId(item) for item in selected]
            except Exception as e:
                pass

code image

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