Django:向管理后台暴露模型方法
示例模型:
class Contestant(models.Model):
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
email = models.EmailField()
...
def send_registration_email(self):
...
我想把这个方法给管理员开放,这样管理人员就可以登录并手动调用它。我在考虑使用属性特性,但不确定这样是否可行。另外,像这样的方法是否可以开放给其他参数,而不仅仅是self,比如从选择中获取的相关对象之类的?
1 个回答
8
你可以把它注册为一个管理操作。
from django.contrib import admin
from myapp.models import Contestant
def send_mail(modeladmin, request, queryset):
for obj in queryset:
obj.send_registration_email()
make_published.short_description = "Resend activation mails for selected users"
class ContestantAdmin(admin.ModelAdmin):
list_display = [...]
ordering = [...]
actions = [send_mail]
admin.site.register(Contestant, ContestantAdmin)