2009-09-02 47 views
8

Tôi muốn biết cách hiển thị thông báo lỗi trong quản trị Django.Quản trị viên Django, thông báo lỗi tùy chỉnh?

Tôi có một phần người dùng riêng trên trang web của mình nơi người dùng có thể tạo yêu cầu bằng cách sử dụng "điểm". Một yêu cầu mất 1 hoặc 2 điểm từ tài khoản của người dùng (tùy thuộc vào hai loại yêu cầu), vì vậy nếu tài khoản có 0 điểm người dùng không thể thực hiện bất kỳ yêu cầu nào ... trong phần người dùng riêng tất cả điều này là tốt, nhưng người dùng cũng có thể gọi cho công ty và thực hiện một yêu cầu qua điện thoại, và trong trường hợp này tôi cần các admin để hiển thị một thông báo lỗi tùy chỉnh trong trường hợp của các điểm sử dụng là 0.

Bất kỳ trợ giúp sẽ được tốt đẹp :)

Cảm ơn guys

Trả lời

20

Một cách để làm điều đó là ghi đè ModelForm cho trang quản trị. Điều đó cho phép bạn viết các phương thức xác nhận tùy chỉnh và trả về các lỗi mà bạn chọn rất sạch sẽ. Như thế này trong admin.py:

from django.contrib import admin 
from models import * 
from django import forms 

class MyForm(forms.ModelForm): 
    class Meta: 
     model = MyModel 
    def clean_points(self): 
     points = self.cleaned_data['points'] 
     if points.isdigit() and points < 1: 
      raise forms.ValidationError("You have no points!") 
     return points 

class MyModelAdmin(admin.ModelAdmin): 
    form = MyForm 

admin.site.register(MyModel, MyModelAdmin) 

Hy vọng điều đó sẽ hữu ích!

+0

Nó thậm chí còn được ghi lại! http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin – adam

4

Tôi đã sử dụng hệ thống tin nhắn tích hợp cho loại điều này. Đây là tính năng in các thanh màu vàng ở phía trên cùng của màn hình khi bạn đã thêm/thay đổi một đối tượng. Bạn có thể dễ dàng sử dụng nó cho mình:

request.user.message_set.create(message='Message text here') 

Xem the documentation.

+0

Đối với một thông báo lỗi, hình thức xác nhận là một lựa chọn tốt hơn (xem câu trả lời của Gabriel). –

+0

Đồng ý, nhưng tôi không nghĩ rằng nó đã được rõ ràng từ OP cho dù đó là một hình thức. Khi đọc lại, có lẽ bạn đã đúng, nhưng đây là một kỹ thuật hữu ích. –

+0

Lưu ý: phương pháp này làm việc cho các phiên bản Django <1.2. Trong 1.2 khung tin nhắn đã thay đổi. Liên kết tài liệu có liên kết đến tài liệu phiên bản phát triển chứ không phải là tài liệu tĩnh 1.1, vì vậy giờ đây tài liệu không phù hợp với mã ở trên. Có lẽ bạn nên cập nhật đoạn mã hoặc liên kết tài liệu, tùy theo điều bạn thích. –

Các vấn đề liên quan