복붙노트

[PYTHON] WTForms SelectField의 기본값을 어떻게 설정합니까?

PYTHON

WTForms SelectField의 기본값을 어떻게 설정합니까?

SelectField의 기본 값을 WTForms로 설정하려고하면 'default'매개 변수에 값을 전달합니다.

class TestForm(Form):
  test_field = SelectField("Test: ", choices=[(1, "Abc"), (2, "Def")], default=2)

나는 또한 다음을 시도했다.

class TestForm(Form):
  test_field = SelectField("Test: ", choices=[(1, "Abc"), (2, "Def")], default=(2, "Def"))

기본 선택 필드를 "Def"로 설정하지 마십시오. 이것은 TextField와 같은 다른 종류의 필드에서도 작동합니다. 어떻게 SelectField의 기본값을 설정합니까? '

해결법

  1. ==============================

    1.게시 한 첫 번째 방법은 정확하며 내게 적합합니다. 작동하지 않는 유일한 설명은 이전 버전의 WTForms를 실행하고 있다는 것입니다. 1.0.1에서 작동했습니다.

    게시 한 첫 번째 방법은 정확하며 내게 적합합니다. 작동하지 않는 유일한 설명은 이전 버전의 WTForms를 실행하고 있다는 것입니다. 1.0.1에서 작동했습니다.

  2. ==============================

    2.이 문제는 Field의 데이터 속성이 WTForms가 이해할 수없는 기본값 (예 : DB 모델 객체 - int가 필요함)을 무시하여 발생한다고 생각합니다. 이것은 생성자에서 폼을 다음과 같이 채운 경우에 발생합니다.

    이 문제는 Field의 데이터 속성이 WTForms가 이해할 수없는 기본값 (예 : DB 모델 객체 - int가 필요함)을 무시하여 발생한다고 생각합니다. 이것은 생성자에서 폼을 다음과 같이 채운 경우에 발생합니다.

    form = PostForm(obj=post)
    

    폼을 채운 후에 데이터 속성을 수동으로 설정하는 것이 솔루션입니다.

    form = PostForm(obj=post)
    form.category.data = (post.category.id
                          if page.category
                          else 0) # I make 0 my default
    
  3. ==============================

    3.이를 수행 할 수있는 몇 가지 방법이 있습니다. 첫 번째 코드 스 니펫이 실제로 맞습니다.

    이를 수행 할 수있는 몇 가지 방법이 있습니다. 첫 번째 코드 스 니펫이 실제로 맞습니다.

    보기에서 동적으로 이렇게하려면 다음을 수행 할 수도 있습니다.

    form = TestForm()
    form.test_field.default = some_default_id
    form.process()
    
  4. ==============================

    4.Flask-WTF 0.14.2 사용자가 여기 있습니다. 이 대답은 나와 비슷한 문제가있는 사람을위한 것입니다.

    Flask-WTF 0.14.2 사용자가 여기 있습니다. 이 대답은 나와 비슷한 문제가있는 사람을위한 것입니다.

    기본적으로 이전 솔루션은 form.validate_on_submit ()에서 제대로 작동하지 않습니다.

    form.test_field.data를 설정하면 실제로 페이지가로드 될 때 기본값이 변경되지만 validate_on_submit (브라우저의 사용자 변경이 적용되지 않음) 후에도 데이터는 동일하게 유지됩니다.

    form.test_field.default를 설정하면 form.process ()를 호출하면 페이지가로드 될 때 값이 변경되지만 validate_on_submit은 실패합니다.

    새로운 방법은 다음과 같습니다.

    class TestForm(Form):
        test_field = SelectField("Test", choices=[(0, "test0"), (1, "test1")])
    
    @app.route("/test")
    def view_function():
        form = TestForm(test_field=1)
        if form.validate_on_submit():
        ...
    
  5. ==============================

    5.SelectField를 사용하여 int를 사용할 때 선택 설정입니다. 다음과 같이 작동합니다.

    SelectField를 사용하여 int를 사용할 때 선택 설정입니다. 다음과 같이 작동합니다.

    test_select = SelectField("Test", coerce=int, choices=[(0, "test0"), (1, "test1")], default=1)
    

    또는:

    class TestForm(Form):
        test_select = SelectField("Test", coerce=int)
    
    @app.route("/test")
    def view_function():
        form = TestForm()
        form.test_select.choices = [(0, "test0"), (1, "test1")]
        form.test_select.default = 1
        form.process()
    
  6. from https://stackoverflow.com/questions/12099741/how-do-you-set-a-default-value-for-a-wtforms-selectfield by cc-by-sa and MIT license