我正在使用 Django,我最近创建了一个博客作为我的第一个 Django/python 项目。为了简单起见,我决定为我的博客管理系统使用默认的管理区域。我想在最初创建博客文章时自动发布 Twitter 更新,但在编辑时不会。我知道如何发送推文,但我如何在帖子的初始保存时运行一些代码,而不是在编辑之后?
我使用的是 Django 1.5.4,博客文章的模型简称为“Post”。
最佳答案
您至少可以通过两种方式做到这一点:您可以像这样覆盖模型的保存方法:
class Post(models.Model):
...
def save(self, *args, **kwargs):
if not self.pk:
#tweet about the post
super(Post, self).save(*args, **kwargs)
..但是如果您只想将此行为与 django admin 相关联(例如,您只想在通过 admin 应用程序创建帖子而不是在显式调用 Post.objects.create() 时发布有关帖子的推文), 然后你可以使用 ModelAdmin
类的 save_model()
方法:
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/
关于python - 在 Django 管理中,在初始保存时发推文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20874828/