Ich berühre mit Django das Auswahlfeld und werde ein Memorandum über die Teile aufbewahren, die lange gedauert haben. Klicken Sie hier für den Beispielcode (https://github.com/yui728/choicefield_sample)
from django import forms
class SampleChoiceForm(forms.Form):
choice1 = forms.fields.ChoiceField(
choices = (
('ja', 'Japan'),
('wir', 'Amerika'),
('uk', 'UK'),
('ch', 'China'),
('kr', 'Korea')
),
required=True,
widget=forms.widgets.Select
)
from django.shortcuts import render
from django.views import View
from . import forms
class SampleChoiceView(View):
def get(self, request):
form = forms.SampleChoiceForm()
context = {
'form': form
}
return render(request, 'choice_sample.html', context)
sample_choice_view = SampleChoiceView.as_view()
<!DOCTYPE html>
<html lang="ja">
<head>
<title> ChoiceField-Beispiel </ title>
</head>
<body>
<form method="POST" aciton="">
{% for field in form %}
{{ field }}
{% endfor %}
{% csrf_token %}
</form>
</body>
</html>
<!doctype html>
<html lang="ja">
<head>
<title> ChoiceField-Beispiel </ title>
</head>
<body>
<form method="POST" action="">
<select id="id_choice1" name="choice1">
<option value = "ja"> Japan </ option>
<option value = "us"> Amerika </ option>
<option value = "uk"> UK </ option>
<option value = "ch"> China </ option>
<option value = "kr"> Korea </ option>
</select>
<input type="hidden" name="csrfmiddlewaretoken" value="xxxxxxxx" />
</form>
</body>
</html>
In offiziellen Tutorials und Django Girls-Tutorials werden Felder mit Auswahlmöglichkeiten in Form von Auswahlmöglichkeiten aus dem Modell oder festen Auswahlmöglichkeiten als Anfangswerte mit dem Parameter "choice" von ChoiceField geschrieben. Was aber, wenn Sie diese Option dynamisch erstellen möchten?
In der Django-Dokumentation befindet sich eine Seite mit dem Namen Model Field Reference.
Es beschreibt die im Formular verwendeten Felder, einschließlich Modellfelder.
Wenn Sie danach suchen, finden Sie den Abschnitt Field.choices
.
Schauen Sie sich für alle Fälle [ChoiceField Source Code] an (https://docs.djangoproject.com/de/2.2/_modules/django/forms/fields/#ChoiceField).
class ChoiceField(Field):
(Weggelassen)
def _get_choices(self):
return self._choices
def _set_choices(self, value):
# Setting choices also sets the choices on the widget.
# choices can be any iterable, but we call list() on it because
# it will be consumed more than once.
if callable(value):
value = CallableChoiceIterator(value)
else:
value = list(value)
self._choices = self.widget.choices = value
choices = property(_get_choices, _set_choices)
(Weggelassen)
Sicher gibt es eine Eigenschaft namens "Auswahl". Lass es uns benutzen.
from django import forms
(Weggelassen)
class SampleChoiceAddForm(forms.Form):
choice1 = forms.fields.ChoiceField(
required=True,
widget=forms.widgets.Select
)
from django.shortcuts import render
from django.views import View
from . import forms
(Weggelassen)
class SampleChoiceAddView(View):
def get(self, request):
form = forms.SampleChoiceAddForm()
form.fields['choice1'].choices = [
('11.'),
('2', '2nd'),
('3', '3rd'),
('4', '4.'),
('5', '5.'),
]
context = {
'form': form
}
return render(request, 'choice_sample.html', context)
(Weggelassen)
sample_choice_add_view = SampleChoiceAddView.as_view()
<!DOCTYPE html>
<html lang="ja">
<head>
<title> ChoiceField-Beispiel </ title>
</head>
<body>
<form method="POST" aciton="">
<select name="choice1" id="id_choice1">
<option value = "1"> 1. </ option>
<option value = "2"> Sekunde </ option>
<option value = "3"> 3. </ option>
<option value = "4"> 4. </ option>
<option value = "5"> 5. </ option>
</select>
<input type="hidden" name="csrfmiddlewaretoken" value="xxxxxxxx">
</form>
</body>
</html>
Ich konnte hinzufügen und nach den Entscheidungen gehen!
Recommended Posts