2013-12-08 3 views
0

Этот вопрос связан с этой: Django - disable model editingЛучше сообщения UI при прерывании экономии в Django администратора

Это мой код:

def save(self, *args, **kwargs): 
     if self.pk is None: 
      print "THIS IS ADD ACTION. NOT DELETE OR CHANGE !!!" 

      numberOfAvalableBooks = Book.objects.get(id=self.book.id).amount 
      print 'numberOfAvalableBooks %s' % numberOfAvalableBooks 

      if self.get_action_display() == 'Out': 
       if numberOfAvalableBooks - self.amount < 0: 
        return "YOU DO NOT HAVE ENOUGH BOOKS !!!" 

      super(Transaction, self).save(*args, **kwargs) 

      # UPDATE AMOUNT 
      book = Book.objects.get(id=self.book.id) 

      if self.get_action_display() == 'Out': 
       book.amount -= self.amount 
      elif self.get_action_display() == 'In': 
       book.amount += self.amount 
      else: 
       print "UNKNOWN ACTION !!!" 

      book.save() 
     else: 
      print self.pk 
      return "CHANGE ACTION DISABLED !!!" 

Это работает нормально, не обновлять или удалять невозможно.
Мне не нравится, что после нажатия кнопки «Сохранить» у меня все еще есть желтое сообщение с «... успешно добавлено».

Возможно ли и как заменить это сообщение и сделать его с другим цветом?

Благодаря

ответ

1

Overwirte response_add(self, request, obj, post_url_continue=None) метод вашего класса администратора.

Взгляните на оригинальный ModelAdmin.response_add в django/contrib/admin/options.py

Вот очень простой пример модели администратора, который переписывает сообщения после добавления и изменения экземпляров.

class AmodelAdmin(admin.ModelAdmin): 
    ... 
    def response_add(self, request, obj, post_url_continue=None): 
     from django.core.urlresolvers import reverse 
     msg = "DON'T CLICK THIS BUTTON!" 
     self.message_user(request, msg, level=messages.WARNING) 
     return self.response_post_save_add(request, obj) 

    def response_change(self, request, obj):) 
     msg = "DON'T CLICK THIS BUTTON!" 
     self.message_user(request, msg, level=messages.WARNING) 
     return self.response_post_save_change(request, obj) 
+0

Я отредактировал метод response_change, чтобы удовлетворить мою потребность. Также у вас был BUG, ​​вы не импортировали сообщения. Спасибо вам за помощь. – WebOrCode

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