[Python] [Django] Verwendung des Auswahlfelds und Hinzufügen von Optionen

Überblick

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)

Inhaltsverzeichnis

Über das Auswahlfeld

Stichprobe

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>

Anzeige

表示結果1.png

Wo es Zeit brauchte

So fügen Sie später Auswahlmöglichkeiten hinzu

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?

Die Eigenschaft "Auswahl" des Feldes

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.

ChoiceField-Code zum späteren Hinzufügen von Auswahlmöglichkeiten

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>

Anzeige

表示結果2.png

Ich konnte hinzufügen und nach den Entscheidungen gehen!

Recommended Posts

[Python] [Django] Verwendung des Auswahlfelds und Hinzufügen von Optionen
So installieren und verwenden Sie pandas_datareader [Python]
Python: Verwendung von Einheimischen () und Globalen ()
Verwendung von Python zip und Aufzählung
Verwendung ist und == in Python
[Python] Verwendung von Hash-Funktion und Taple.
python3: Verwendung der Flasche (2)
[Python] Verwendung von Liste 1
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
[Python] Verwendung von input ()
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
Verwendung von Django mit Google App Engine / Python
Wie man Decorator in Django benutzt und wie man es macht
Python: So verwenden Sie Async mit
So installieren und verwenden Sie Tesseract-OCR
[Python] Verwendung der Pandas-Serie
Verwendung von Anfragen (Python Library)
Verwendung von SQLite in Python
Verwendung von .bash_profile und .bashrc
So installieren und verwenden Sie Graphviz
[Python] Verwendung von Liste 3 Hinzugefügt
Wie man MySQL mit Python benutzt
Verwendung der Python-API von OpenPose
Verwendung von ChemSpider in Python
Python: Verwendung von pydub (Wiedergabe)
Verwendung von PubChem mit Python
Verwendung der Zip-Funktion von Python
[Python] Verwendung der Typetalk-API
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
[Python] Zusammenfassung der Verwendung von Split- und Join-Funktionen
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
[Python] Zusammenfassung der Verwendung von Pandas
So verpacken und verteilen Sie Python-Skripte
[Einführung in Python] Wie verwende ich eine Klasse in Python?
[Python] So fügen Sie einer Tabelle Zeilen und Spalten hinzu (pandas DataFrame)
[Python] Verwendung von __command__, Funktionserklärung
Verwendung von Funktionen in separaten Dateien Perl-Version und Python-Version
[Python] Verwendung von import sys sys.argv
Verwendung von Umgebungsvariablen für Serverless Framework und Python und Verwaltung von Phasen
[Python] Organisieren der Verwendung für Anweisungen
Memorandum über die Verwendung von Gremlin Python
[Python2.7] Zusammenfassung der Verwendung von unittest
Verwendung von __slots__ in der Python-Klasse
Verwendung von "deque" für Python-Daten
[Python] Berechnen von MAE und RMSE
[Python] Verstehen, wie rekursive Funktionen verwendet werden
So fügen Sie der Anaconda-Umgebung ein Python-Modul hinzu
Zusammenfassung der Verwendung der Python-Liste
Verwendung regulärer Ausdrücke in Python
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Hinzufügen von Optionen zum run.ver-Manager von Django
[Einführung in Python] Verwendung des Booleschen Operators (und ・ oder ・ nicht)