2011-01-28 2 views
0

У меня есть модель с методом delete, которая принимает 2 аргумента. Что мне нужно переопределить, чтобы убедиться, что мой пользовательский метод удаления - это то, что вызывается от администратора django? В версии, использующей все еще, нет delete_model, поэтому я не могу ее использовать.Переопределение метода удаления django model.py с дополнительными аргументами

ответ

0

То, что я в конечном итоге делает писал мой собственный пользовательский удалить действие, которое использовал мой обычай удаления метод вместо использования навалом QuerySet удалим

class MyModelAdmin(admin.ModelAdmin): 
    actions = ['custom_delete_selected',] 

    def get_actions(self, request): 
     actions = super(MyModelAdmin, self).get_actions(request) 
     del actions['delete_selected'] 
     return actions 

    def custom_delete_selected(self, request, queryset): 
     #Meant to cancel the default delete operation in admin page 
     #so that the system uses the model's delete method instead of queryset.delete 
     for obj in queryset: 
      obj.delete("param1", "param2") 

     if queryset.count() == 1: 
      message_bit = "1 item was" 
     else: 
      message_bit = "%s items were" % queryset.count() 
     self.message_user(request, "%s successfully deleted." % message_bit) 

    custom_delete_selected.short_description = "Delete selected items" 
-1

вам нужно использовать Django 1.3, который имеет delete_model метод с 3-мя аргументами

+0

Это не отвечает на вопрос. Как уже было сказано, в вопросе «В версии, использующей все еще, нет delete_model, поэтому я не могу использовать это» – domino

Смежные вопросы