2010-09-02 4 views
3

Пример модель:Джанго: Разоблачение метод модели админ

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, возможно связанные объекты из выбранного или что-то еще?

ответ

7

Вы можете зарегистрировать его как admin action.

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) 
+0

Ничего себе, что было быстро, именно то, что я закончил делать. Благодаря! –

Смежные вопросы