Mam choiceField
, aby utworzyć pole wyboru z niektórymi opcjami. Coś takiego:Korzystanie z dynamicznego pola wyboru w Django
forms.py
class NewForm(forms.Form):
title = forms.CharField(max_length=69)
parent = forms.ChoiceField(choices = CHOICE)
Ale chcę, aby móc tworzyć opcje bez predefiniowanego krotki (co jest wymagane przez ChoiceField
). Zasadniczo potrzebuję dostępu do request.user, aby wypełnić niektóre tagi opcji dla każdego użytkownika, ale nie wiem, czy istnieje jakikolwiek sposób użycia zapytania w klasach formularzy. Forma.
Alternatywą byłoby wstępnie wypełnić wystąpienie NewForm
poprzez:
views.py
form = NewForm(initial={'choices': my_actual_choices})
ale muszę dodać obojętne wyborem do tworzenia Newform i my_actual_choices nie wydaje się w każdym razie działa.
Myślę, że trzecim sposobem rozwiązania tego problemu jest stworzenie podklasy ChoiceField i przedefiniowanie save()
, ale nie jestem pewien, jak to zrobić.
Tak, to działa. Dzięki –
'super()' powinno być na pierwszym miejscu. – Surya
Byłem zdezorientowany, gdy zobaczyłem 'super()' przed konstruktorem, ale kiedy spróbowałem, dostałem błąd: nazwa 'self' nie jest zdefiniowana. 'super()' musi znajdować się w konstruktorze. Patrząc na historię edycji, myślę, że to właśnie miała na myśli Surya, ponieważ 'super()' była pierwotnie ostatnią linią w konstruktorze. – user2233706