Вы не можете сделать это в форме, не передавая пользователя в конструктор формы. Вместо этого вы можете использовать функцию ModelAdmin.save_model
, которая получает объект запроса.
Методу save_model присваивается
HttpRequest, экземпляр модели,
Экземпляр ModelForm и логическое значение
в зависимости от того, добавляет ли он или
изменение объекта. Здесь вы можете сделать
любые операции до или после сохранения.
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
Edit:
Поскольку вы хотите поместить логику / сообщения в чистую функцию, вы можете сделать что-то вроде:
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)
Очень поздно редактировать:
user.message_set
считается устаревшим в Django 1.4. Вместо этого вы должны использовать ModelAdmin.message_user
. https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#django.contrib.admin.ModelAdmin.message_user