2010-09-09 21 views
10

Khi nào bạn nên sử dụng TypedChoiceField với hàm coerce trên ChoiceField bằng phương pháp sạch trên biểu mẫu cho trường?TypedChoiceField hoặc ChoiceField tại Django

Nói cách khác, tại sao bạn sử dụng MyForm trên MyForm2 hoặc ngược lại. Đây có phải là vấn đề ưu tiên không?

from django import forms 

CHOICES = (('1', 'A'), ('2', 'B'), ('3', 'C')) 

class MyForm(forms.Form): 
    my_field = ChoiceField(choices=CHOICES) 

    def clean_my_field(self): 
     value = self.cleaned_data['my_field'] 
     return int(value) 

class MyForm2(forms.Form): 
    my_field = TypedChoiceField(choices=CHOICES, coerce=int) 

Trả lời

11

Tôi sẽ sử dụng phương pháp clean_field để thực hiện "nâng hạng nặng". Ví dụ: nếu trường của bạn yêu cầu chuyển đổi không phải là nhỏ, tùy chỉnh và/hoặc loại, v.v. Nếu mặt khác, yêu cầu đơn giản như co giật đến int thì clean_fieldcó lẽ là quá mức cần thiết. TypedChoiceField sẽ là cách để đi trong trường hợp đó.

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