Je touche le champ de choix avec Django, et je garderai un mémorandum des parties qui ont pris du temps. Cliquez ici pour un exemple de code (https://github.com/yui728/choicefield_sample)
choix
](propriété #field choix)django.forms.widgets.Select
<select name =" field name "> <option value =" choice.key "> choice.value </ option> ... </ select>
--Référence: Champs de formulaire: Champ de choixfrom django import forms
class SampleChoiceForm(forms.Form):
choice1 = forms.fields.ChoiceField(
choices = (
('ja', 'Japon'),
(«nous», «Amérique»),
(«uk», «UK»),
('ch', 'Chine'),
('kr', 'Corée')
),
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> Échantillon ChoiceField </ 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> Échantillon ChoiceField </ title>
</head>
<body>
<form method="POST" action="">
<select id="id_choice1" name="choice1">
<option value = "ja"> Japon </ option>
<option value = "us"> Amérique </ option>
<option value = "uk"> Royaume-Uni </ option>
<option value = "ch"> Chine </ option>
<option value = "kr"> Corée </ option>
</select>
<input type="hidden" name="csrfmiddlewaretoken" value="xxxxxxxx" />
</form>
</body>
</html>
Dans les tutoriels officiels et les tutoriels Django Girls, les champs avec des choix sont écrits sous la forme d'obtenir des choix du modèle ou de donner des choix fixes comme valeurs initiales avec le paramètre choice
de ChoiceField.
Mais que faire si vous souhaitez créer cette option de manière dynamique?
choix
du champIl y a une page appelée Model Field Reference dans la documentation Django.
Il décrit les champs utilisés dans le formulaire, y compris les champs de modèle.
Si vous le cherchez, vous trouverez la section Field.choices
.
Au cas où, jetez un œil à ChoiceField Source Code.
class ChoiceField(Field):
(Omis)
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)
(Omis)
Il existe certainement une propriété appelée «choix». Utilisons-le.
from django import forms
(Omis)
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
(Omis)
class SampleChoiceAddView(View):
def get(self, request):
form = forms.SampleChoiceAddForm()
form.fields['choice1'].choices = [
('11ème'),
('2', '2e'),
('3', '3e'),
('4', '4e'),
('5', '5e'),
]
context = {
'form': form
}
return render(request, 'choice_sample.html', context)
(Omis)
sample_choice_add_view = SampleChoiceAddView.as_view()
<!DOCTYPE html>
<html lang="ja">
<head>
<title> Échantillon ChoiceField </ title>
</head>
<body>
<form method="POST" aciton="">
<select name="choice1" id="id_choice1">
<option value = "1"> 1er </ option>
<option value = "2"> seconde </ option>
<option value = "3"> 3e </ option>
<option value = "4"> 4ème </ option>
<option value = "5"> 5ème </ option>
</select>
<input type="hidden" name="csrfmiddlewaretoken" value="xxxxxxxx">
</form>
</body>
</html>
J'ai pu ajouter et poursuivre les choix!
Recommended Posts