繁体   English   中英

在 Django admin 中添加自定义模型方法

[英]Add custom model method in Django admin

我有一个模型Ad ,它有一个自定义的add_ownership_including_ancestors方法。 像下面这样:

模型.py

class Ad(models.Model):
    name = models.CharField(max_length=100)
    creator = models.ForeignKey('User', on_delete=models.CASCADE)

    def add_ownership_including_ancestors(self, current_user_id):
        #function to add permissions to current_user and creator and their ancestors

视图.py

class AdViewSet(viewsets.ModelViewSet):

    def create():
        #here the method is called
        adInstance.add_ownership_including_ancestors(request.user.id)

现在这个功能在普通网页中工作正常。 每当我从 django 管理页面创建或更新ad对象时,我都希望在django admin页面中实现相同的方法。 我怎样才能做到这一点?

您可以覆盖.save_model(…)方法[Django的文档]中的ModelAdmin您的Ad模式:

from django.contrib import admin

class AdAdmin(admin.ModelAdmin):
    
    # …
    
    def save_model(self, request, obj, form, change):
        super().save_model(request, obj, form, change)
        obj.add_ownership_including_ancestors(request.user.id)

admin.site.register(Ad, AdAdmin)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM