No puede hacerlo en el formulario sin pasar al usuario al constructor de formulario. En su lugar, puede usar la función ModelAdmin.save_model
a la que se le da el objeto de solicitud.
El método save_model se le da la HttpRequest, una instancia de modelo, un ejemplo ModelForm y un valor booleano en función de si se está añadiendo o cambiar el objeto. Aquí puede hacer cualquier operación anterior o posterior a la grabación.
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
Editar: Puesto que usted quiere poner la lógica/mensajes en la función de limpieza que podría hacer algo como:
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)
Muy tarde editar:
user.message_set
es está en desuso en Django 1.4. En su lugar, debe usar ModelAdmin.message_user
. https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#django.contrib.admin.ModelAdmin.message_user
Mmmmm. El mensaje depende de alguna lógica de validación, por lo que tiene mucho más sentido vivir en el método Clean() de ModelForm. Si lo muevo a ModelAdmin save_model() voy a tener que escribir una lógica desordenada solo por enviar un mensaje. –
Punto justo. Verifique mi edición y vea si eso ayudó. –
Moví los user_messages al init del formulario y agregué self. a la línea 'user_messages.append' y eso funcionó! Gracias. –