2013-05-07 33 views
5

Tôi đã có thể triển khai this change để tạo Trường bị tắt trong WTForms. Làm thế nào tôi có thể vô hiệu hóa một cách chọn lọc một trường trong chế độ xem của tôi trước khi hiển thị nó?WTForms của Python Flask: Làm thế nào tôi có thể vô hiệu hóa một trường động trong một khung nhìn?

+1

Bạn có thể thử 'form.field (tắt _ = "tàn tật") 'trong mẫu. http://wtforms.simplecodes.com/docs/1.0.4/fields.html#wtforms.fields.Field.__call__ –

Trả lời

7

Nếu bạn đang cố xóa một trường, bạn có thể xem Removing Fields Per-instance trong tài liệu.

Từ các tài liệu:

Đôi khi, bạn tạo một hình thức trong đó có lĩnh vực mà không phải là hữu ích trong việc mọi hoàn cảnh hay để tất cả người dùng. Trong khi thực sự có thể với thừa kế biểu mẫu để xác định biểu mẫu với chính xác các trường bạn cần, đôi khi cần phải chỉnh sửa biểu mẫu hiện có. May mắn thay, hình thức có thể có các trường loại bỏ hậu instantiation bằng del keyword:

class MagazineIssueForm(Form): 
    title = TextField() 
    year = IntegerField('Year') 
    month = SelectField(choices=MONTHS) 

def edit_issue(): 
    publication = get_something_from_db() 
    form = MagazineIssueForm(...) 

    if publication.frequency == 'annual': 
     del form.month` 
+0

Cảm ơn. Nhưng tôi đang tìm cách vô hiệu hóa các lĩnh vực, không xóa nó. – sixarm

+0

Ah xin lỗi - tôi hiểu lầm. Làm thế nào để bạn có nghĩa là vô hiệu hóa? Hiển thị nó nhưng làm cho nó để các lĩnh vực không thể được sửa đổi? – Ewan

+0

Điều này rất giống với một câu hỏi khác, và tôi đã viết một câu trả lời chi tiết ở đó: http://stackoverflow.com/a/16576294/244393 – Crast

5

Nó gần như @Bibhas đề xuất. Nếu tôi hiểu được điều này một cách chính xác và bạn muốn vô hiệu hóa một lĩnh vực thông qua các thuộc tính html bị vô hiệu hóa, sau đó sau đây làm việc cho tôi:

form.field(disabled=True) 

Câu trả lời này có thể là hơi muộn, nhưng nếu bất cứ ai khác có vấn đề này nó có thể giúp.

3

vim forms.py:

add_time = DateTimeField(

    '添加时间', 
    format='%Y-%m-%d %H:%M:%S', 
    default=datetime.datetime.now(), 
    # I use bs3,and it well add input an attribute disabled 
    render_kw={'disabled':''}, 
    validators=[DataRequired()], 
) 
+0

Cảm ơn vì điều này! Trong trường hợp của tôi, biểu mẫu đã được khởi tạo, vì vậy tôi đã thực hiện 'form.my_field.render_kw = {'disabled': 'disabled'}'. – elethan

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