2012-06-10 36 views
18

Tôi muốn có một trường được yêu cầu có điều kiện dựa trên việc đặt giá trị boolean thành True hoặc False.Trường biểu mẫu Django bắt buộc có điều kiện

Tôi nên quay lại bộ nào được yêu cầu = True nếu is_company được đặt thành True?

class SignupFormExtra(SignupForm): 
    is_company = fields.BooleanField(label=(u"Is company?"), 
            required=False) 
    NIP = forms.PLNIPField(label=(u'NIP'), required=False) 


def clean(self): 
    if self.cleaned_data.get('is_company', True): 
     return ...? 
    else: 
     pass 
+0

Vì vậy, NIP chỉ cần thiết nếu is_company được thiết lập là True? – arie

+0

Vâng, chính xác :) – Efrin

+0

Và, nó có hoạt động không? – arie

Trả lời

25

Kiểm tra chương trên Cleaning and validating fields that depend on each other trong tài liệu.

Ví dụ được đưa ra trong các tài liệu có thể dễ dàng thích nghi với tình huống của bạn:

def clean(self): 
    cleaned_data = super(SignupFormExtra, self).clean() 
    is_company = cleaned_data.get("is_company") 
    nip = cleaned_data.get("NIP") 
    if is_company and not nip: 
     raise forms.ValidationError("NIP is a required field.") 
    return cleaned_data 
+4

Liên kết @arie được cung cấp cũng bao gồm cách liên kết lỗi với trường bằng cách thay thế báo cáo tăng lên bằng self._errors ["NIP"] = self.error_class (["Điều này là trường bắt buộc. "]) – Seth

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