Действия 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