2012-04-01 36 views
11

Tôi đang cố gắng để thiết lập lỗi lĩnh vực trong một hình thức làm sạch() và tôi hiện đang thực hiện:Django - hình sạch() và lĩnh vực lỗi

self._errors['address'] = self._errors.get('address', ErrorList()) 
self._errors['address'].append(_(u'Please specify an address.')) 

Có một phương pháp tốt hơn và nếu có thể ngắn hơn cho làm điều này?

+0

self.errors sử dụng thay vào đó, nó sẽ trả về _errors và không có nghĩa là phải tin – radtek

Trả lời

5
  1. Cách tiêu chuẩn là raise ValidationError(message).
  2. Di chuyển xác thực trường cụ thể theo phương thức clean_<fieldname>(), clean_address trong trường hợp của bạn. ValidationError được nêu trong phương thức như vậy sẽ đính kèm thông báo lỗi vào trường cụ thể. Một được nêu từ clean() sẽ được quy cho mô hình nói chung.
+1

Tôi hiện đang sử dụng 'sạch()' để phê chuẩn một số điều liên quan đến nhiều lĩnh vực - Tôi là khá mới để Django và Python nói chung và tôi đã tự hỏi nếu có tốt hơn/ngắn hơn cách để kiểm tra/tạo/phụ thêm các lỗi cụ thể của trường. – RS7

+0

Đã thêm mụC# 3, có lẽ nó mô tả những gì bạn cần. Lấy từ thực hiện nội bộ của django là 'clean_fields' –

+0

Bạn có thể mở rộng đề xuất của mình số 3 không? Nó không hiệu quả với tôi. Tôi có thể thấy rằng ['ValidationError' class] (https://code.djangoproject.com/browser/django/trunk/django/core/exceptions.py#L41) chấp nhận một từ điển lỗi như thế, nhưng [' Forms ._clean_form'] (https://code.djangoproject.com/browser/django/trunk/django/forms/forms.py#L297) không thực sự sử dụng nó. –

7

Có thể điều này sẽ giúp ích cho bạn. Nói chung, bạn thường ghi đè lên trong sạch và bên trong hàm bạn có thể làm như sau

Nếu bạn muốn tăng các lỗi cụ thể của biểu mẫu mà bạn có thể làm.

self._errors["field"] = ErrorList([u"Error"]) 

này là đảm bảo bạn sẽ có được lớp lỗi

nếu bạn có một lỗi không lĩnh vực bạn có thể tăng đơn giản một lỗi xác nhận như vậy

raise forms.ValidationError(_("Error")) 

Hope this helps.

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