Найти - Пользователи
Полная версия: Свое удаление для модели в админке
Начало » Django » Свое удаление для модели в админке
1
leechuck
Добрый день !

Если список пользователей.
Как сделать свое удаление именно для этой модели в админке ? С пользователем связывается
очень много таблиц, которые тоже удаляются.

Можно переопределить delete() для модели. Можно ли в этой случае не выполнять super для delete() ?

Может есть какой то способ переопределить удаление именно для админки.
Мне там просто флаг поставить в модели, что бы потом не отображать в админке.

Спасибо
leechuck
Можно ли сделать так ?

class MyModelAdmin(ModelAdmin):
    def delete_view(self, request, object_id, extra_context=None):
        if request.POST:
             user = User.objects.get(id=object_id)
             user.deleted = true
             user.save
        #super(MyModelAdmin, self).delete_view(request, object_id, extra_context)

Не выполняя super для delete_view ?
FishHook
Если посмотришь на реализацию delete_view класса ModelAdmin, то увидишь, что метод возвращает TemplateResponse, а твой метод этого не делает, поэтому нужно либо вызывать метод родителя, либо переписывать метод более детально.
leechuck
FishHook

Спасибо, посмотрел.
Там есть метод

    def delete_model(self, request, obj):
        """
        Given a model instance delete it from the database.
        """
        obj.delete()

Попробую его переопредилить !
leechuck
Хотя

Warning
ModelAdmin.save_model() and ModelAdmin.delete_model() must save/delete the object, they are not for veto purposes, rather they allow you to perform extra operations
leechuck
Переопределил delete() в модели и все путем
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB