Bạn không thể làm điều đó trên biểu mẫu mà không chuyển người dùng vào hàm tạo biểu mẫu. Thay vào đó, bạn có thể sử dụng hàm ModelAdmin.save_model
được cung cấp đối tượng yêu cầu.
Phương pháp save_model được cho HttpRequest, một trường hợp mô hình, một ModelForm dụ và một giá trị boolean dựa vào việc nó được thêm hoặc thay đổi đối tượng. Tại đây bạn có thể làm mọi hoạt động trước hoặc sau khi lưu.
http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model
Edit: Vì bạn muốn đặt logic/tin nhắn trong hàm sạch bạn có thể làm một cái gì đó như:
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)
Rất muộn chỉnh sửa:
user.message_set
là thiết lập để không được chấp nhận trong Django 1.4. Thay vào đó, bạn nên sử dụng ModelAdmin.message_user
. https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#django.contrib.admin.ModelAdmin.message_user
Nguồn
2010-02-12 14:58:41
Mmmmm. Thông điệp phụ thuộc vào một số logic xác nhận để làm cho cảm giác sống tốt hơn trong phương thức cleanF (ModelForm clean). Nếu tôi di chuyển nó đến ModelAdmin save_model() Tôi sẽ phải viết một số logic lộn xộn chỉ vì lợi ích của việc gửi một tin nhắn! –
Điểm công bằng. Kiểm tra chỉnh sửa của tôi và xem điều đó có hữu ích hay không. –
Tôi đã chuyển user_messages vào init của biểu mẫu và tự thêm. đến dòng 'user_messages.append' và điều đó đã có tác dụng! Cảm ơn. –