В администраторе Django твитнуть при первоначальном сохранении?

Я использую Django и недавно создал блог в качестве своего первого проекта Django/python. Для простоты я решил использовать панель администратора по умолчанию для своей системы управления блогом. Я хотел бы автоматически публиковать обновление твиттера при первоначальном создании сообщения в блоге, но не при его редактировании. Я знаю, как отправить твит, но как мне запустить какой-то код при первоначальном сохранении поста, а не после редактирования?

Я использую Django 1.5.4, а модель для сообщений в блогах называется просто «Пост».


person jstnknt    schedule 02.01.2014    source источник


Ответы (1)


вы можете сделать это по крайней мере двумя способами: Вы можете переопределить метод сохранения модели следующим образом:

class Post(models.Model):
    ...
    def save(self, *args, **kwargs):
       if not self.pk:
         #tweet about the post
       super(Post, self).save(*args, **kwargs)

... но если вы хотите связать это поведение только с администратором django (например, вы хотите твитить о сообщении только тогда, когда оно создается через приложение администратора, а не при явных вызовах Post.objects.create()), тогда вы можете использовать метод save_model() класса ModelAdmin:

class PostAdmin(admin.ModelAdmin):
   ....
   def save_model(self, request, obj, form, change):
      if not obj.pk:
         #tweet about the post
      obj.save()

Вы также можете взглянуть на https://docs.djangoproject.com/en/dev/ref/contrib/admin/

person ppetrid    schedule 02.01.2014
comment
Вы также можете взглянуть на сигналы: docs.djangoproject.com/en/dev/ темы/сигналы - person allcaps; 02.01.2014