Non è possibile farlo sul modulo senza passare l'utente al costruttore di moduli. Invece è possibile utilizzare la funzione ModelAdmin.save_model
alla quale viene assegnato l'oggetto richiesta.
Procedimento save_model viene dato il HttpRequest, un'istanza modello, un'istanza ModelForm e un valore booleano a seconda se si sta aggiungendo o cambiando l'oggetto. Qui puoi fare qualsiasi operazione di pre o post-salvataggio.
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
Edit: Dal momento che si vuole mettere la logica/messaggi in funzione di pulizia si potrebbe fare qualcosa di simile:
class MyAdminForm(forms.ModelForm):
user_messages = []
def clean(self):
# Some stuff happens...
user_messages.append("Some stuff happened")
class MyAdmin(admin.ModelAdmin):
form = MyAdminForm
def save_model(self, request, obj, form, change):
for message in form.user_messages:
request.user.message_set.create(message=message)
Molto tardi edit:
user.message_set
è impostato per essere deprecato in Django 1.4. Dovresti invece usare ModelAdmin.message_user
. https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#django.contrib.admin.ModelAdmin.message_user
fonte
2010-02-12 14:58:41
Mmmmm. Il messaggio dipende da una logica di convalida, quindi è molto più sensato vivere nel metodo modelForm clean(). Se lo sposto in ModelAdmin save_model() dovrò scrivere qualche logica disordinata solo per inviare un messaggio! –
Punto giusto. Controlla la mia modifica e vedi se questo ha aiutato. –
Ho spostato user_messages in init del modulo e ho aggiunto self. alla riga 'user_messages.append' e questo ha funzionato a meraviglia! Grazie. –