2010-09-02 7 views
3

Exemple modèle:Django: Révéler méthode de modèle à admin

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): 
     ... 

Je voudrais être en mesure d'exposer cette méthode à l'administrateur afin que les gestionnaires peuvent se connecter et appeler manuellement. Je pense à essayer des attributs de propriété, mais je ne sais pas si ça va marcher. Aussi est-il possible d'exposer une méthode comme celle-ci qui prend des arguments autres que self, éventuellement des objets liés d'un select ou quelque chose?

Répondre

7

Vous pouvez l'enregistrer en tant que 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

Wow c'était rapide, exactement ce que j'ai fini par faire. Merci! –