在Django管理站点中调用方法

时间:2014-02-18 11:34:40

标签: python django django-admin django-sites

我有一个Django项目,现在一切正常。我有一个Django管理站点,现在,我希望当我向我的模型添加一个新记录时,一个函数同时调用并开始一个进程。我怎么能这样做?这个动作的名字是什么?

1 个答案:

答案 0 :(得分:0)

  • 1 WAY

您可以使用django信号将models.py转到您的应用中,您可以执行此操作。

from django.db.models.signals import post_save

class Test(models.Model):
    # ... fields here

# method for updating
def update_on_test(sender, instance, **kwargs):
     # custome operation as you want to perform

# register the signal
post_save.connect(update_on_test, sender=Test)
  • 2 WAY

如果使用django admin将数据填充到表中,则可以使用modeladmin类的save()方法。

class TestAdmin( admin.ModelAdmin ):
    fields  = ['title', 'body' ]
    form = TestForm

    def save_model(self, request, obj, form, change):
         # your login if you want to perform some comutation on save 
         # it will help you if you need request into your work
         obj.save()