왜 이것이 가능하지 않습니까?
다른 방법으로 데이터를 클래스 Test에 전달하는 목표를 달성 할 수 있습니까?
미리 감사드립니다.장고 양식에 데이터 전달하기
답변
이것은 기본적인 파이썬 문제입니다. 이러한 명령이 실행되는 순서와 범위에 대해 생각해 봐야합니다.
먼저 Test라는 폼 클래스를 정의합니다. 이 클래스에는 set_choices
메소드, get_choices
메소드 및 options
필드의 세 가지 속성이 있습니다. 이러한 정의는 클래스 자체가 정의 될 때 평가됩니다. options
의 정의는 get_choices()
입니다. 그러나 클래스가 아직 정의되지 않았으므로 그 시점에 범위에 get_choices
메소드가 없습니다.
options
에 대한 선택 사항 정의가 정의 시간에 완료 되었기 때문에 어떻게 든 범위 문제를 분류해도이 작업은 원하는대로 수행되지 않습니다. 나중에 set_choices
을 호출하더라도 options
의 값은 필드 정의시 반환 된 get_choices
의 값을 유지합니다.
그래서 실제로 무엇을하고 싶습니까? options
입력란에 동적 선택을 설정하려는 것 같습니다. 따라서 __init__
메서드를 재정 의하여 정의해야합니다. __init__
확장
class Test(forms.Form):
options = forms.ChoiceField(choices=())
def __init__(self, *args, **kwargs):
choices = kwargs.pop('choices', None)
super(Test, self).__init__(*args, **kwargs)
if choices is not None:
self.fields['options'].choices = choices
보기에서 테스트 양식을 사용할 때 어떻게 이러한 선택 사항을 전달합니까? –
당신이 무엇을 요구하고 있는지 잘 모르겠습니다. 그러나 5 년 전의 대답에 대해 논평하는 것이 아니라 새로운 질문을해야합니다. –
다니엘 Roseman가 his answer에 대해 설명 동적 ChoiceField
에 옵션을 추가 할 수있는 좋은 방법입니다.
그냥 추가하십시오 ... 런타임에 옵션 추가 hackish (기껏해야)입니다. 필요하지 않게 리스트 나 튜플 -
마지막으로, 선택은 어떤 반복 가능한 객체가 될 수 있습니다 - 여기 노트 (직선 Django ChoiceField documentation에서)에 대한 모범 사례입니다. 이를 통해 선택 사항을 동적으로 구성 할 수 있습니다. 그러나 자신이 해킹하는 선택 사항이 일 경우 ForeignKey가있는 적절한 데이터베이스 테이블을 사용하는 것이 좋습니다. 선택 사항은 많은 경우 바뀌지 않는 정적 데이터, (있는 경우)을 의미합니다.
- 1. 페이지간에 데이터 전달하기 asp.net
- 2. 장고 양식에 이미지 표시
- 3. PHP의 다중 페이지 양식에 변수 전달하기
- 4. 뷰에서 컨트롤러로 데이터 전달하기
- 5. VB.NET 양식간에 데이터 전달하기
- 6. asp.net 페이지간에 데이터 전달하기
- 7. Usercontrol에서 컨트롤러로 데이터 전달하기
- 8. 페이지에서 페이지로 데이터 전달하기
- 9. JavaScript로 데이터 전달하기
- 10. android에서 phonegap으로 데이터 전달하기
- 11. 누적보기간에 데이터 전달하기
- 12. 상태간에 데이터 전달하기 PHP
- 13. 대화 상자와 패널간에 데이터 전달하기
- 14. C++에서 PHP로 데이터 전달하기
- 15. CKeditor 창 인스턴스에서 데이터 전달하기
- 16. PHP에서 많은 양의 데이터 전달하기
- 17. ASP.Net MVC에서보기에서 컨트롤러로 데이터 전달하기
- 18. HTML 양식 및 데이터 전달하기
- 19. 팝업 된보기 컨트롤러에서 데이터 전달하기
- 20. java에서 perl로 데이터 구조 전달하기
- 21. Swing의 패널 및 데이터 전달하기
- 22. 보기에 데이터 전달하기 (ASP.NET MVC)
- 23. delegate에서 viewcontroller로 데이터 전달하기 iOS
- 24. ASP.NET MVC에서 양식간에 데이터 전달하기
- 25. 장고 등록 양식에 추가 필드 추가하기
- 26. 장고 양식 유효성 검사 내 양식에
- 27. 장고 쿼리는 데이터
- 28. MVC 컨트롤러에서 PHP로 뷰로 데이터 전달하기
- 29. 다른 레이어에 데이터 집합 전달하기 (디자인 관련)
- 30. LINQ-nuttiness를 사용하여 ASP.NET MVC에서 데이터 전달하기
문서를 자세히 읽었습니까? http://docs.djangoproject.com/en/1.3/topics/forms/ – Nacho