【问题标题】:django 2.1 execute function on add new item from admin paneldjango 2.1 在从管理面板添加新项目时执行功能
【发布时间】:2018-11-28 19:19:10
【问题描述】:

每次管理员在表格视频中添加新项目时,我都需要执行命令。示例 admin.py

class VideosAdmin(admin.ModelAdmin):
    list_display = ('__str__', 'author', 'created_at', 'title_gen', 'deleted')
    list_filter = ['created_at', 'author', 'deleted']
    search_fields = ['Title', 'Description', 'Tags', 'Playlist']
    exclude = ['title_gen', 'Playlist', 'Tags', 'deleted', 'author', 'Category', 'Language']

    class Meta:
        model = Videos


    def get_queryset(self, request):
        return self.model.all_objects.all()

    def save_model(self, request, obj, form, change):
        if getattr(obj, 'author', None) is None:
            obj.author = request.user
        obj.save()

admin.site.register(Videos, VideosAdmin)

每次当管理员添加新的视频项目时,我都需要执行函数proccessing(video_id),我该怎么做?

【问题讨论】:

  • 这取决于处理视频所需的时间。您可能需要异步执行,这将是一个不同的问题。但总的来说,@ruddra 是对的。
  • @AliAsgari 是的,也许我需要异步,因为我想处理视频
  • 您可以编写异步任务,但该任务必须从 save_model 方法启动。
  • @ruddra 我尝试这样做,但我返回错误,stackoverflow.com/questions/53527918/…
  • 嗯,很高兴您针对您遇到的问题发布了另一个问题。它实际上不在当前问题的范围内。我希望我的回答能帮助您从 Video Object 中获得 video_id。如果是这样,请考虑接受这个答案。谢谢!!

标签: django


【解决方案1】:

您可以在save_model 方法中覆盖:

def save_model(self, request, obj, form, change):
    if getattr(obj, 'author', None) is None:
        obj.author = request.user
    obj.save()
    if not change:  # Change is False when a New Object is Created
        proccessing(obj.id)  # import proccessing method in the file as well

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2017-06-25
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多