Django

Forms-Fields

Django - formuláře

1.  Formulářová pole

Toto je seznam atributů a metod, které se vztahují ke konkrétní položce formuláře.

1.1  Validace

clean
Metoda, která spouští validaci konkrétní položky. Jako argument bere "surovou hodnotu" a vrací buď normalizovaná data, nebo výjimku ValidationError.

1.2  Argumenty formulářových položek (pol = Form.CharField(argument=hodnota)

Nastavujeme, jen když nevyhovuje výchozí stav. Tedy validace proběhne i bez zadání "validators". Lokalizový vstup funguje i bez "localize" obvykle dobře.

required
Boolean, zda položka smí být prázdná, nebo je pole povinné
label
Lidská podoba textu návěští pro položku. Jinak je label generován z názvu položky.
initial
Hodnota, která se vloží jako výchozí v unbound formuláři. Konstanta nebo callable.
widget
Chceme-li jiný, než výchozí widget na html stránce.
help_text
Umoží přidat nápovědu k položce. Zobrazí se napravo od formulářového pole v html výstupu.
error_messages
Nahradí výchozí chybové hlášky našimi. Je to slovník, kde klíč je název chyby a hodnota je text hlášky. Př: error_messages={'required': 'Please enter your name'}
validators
Seznam validačních funkcí.
localize
Umožní upravit lokalizaci vstupu. Výchozí ale většinou vyhovuje (např. datum můžeme v Česku zadat ve formátu d.m.rrrr a Django to pochopí).

1.3  Vestavěné typy položek (field classes)

Kromě zmíněných paramterů můžeme samozřejmě použít i obecné z předchozí části.

Textové typypopisparametrywidgeterr klíče
CharFieldtextový řetězecmax_length, min_lengthTextInputrequired, max_length, min_length
EmailFieldemailová adresamax_length. min_lengthTextInputrequired, invalid
RegexFieldtextový řetězecregex - buď jako text, nebo zkompilovaný regex objektTextInputrequired, invalid
SlugFieldtextový řetězec z písmen, číslic, podtržítek a pomlček TextInputrequired, invalid
Číselné typypopisparametrywidgeterr klíče
DecimalFielddesetinné číslo decimalmax_value, min_value, max_digits, decimal_placesTextInputrequired, invalid, max_value, min_value, max_digits, max_decimal_places, max_whole_digits
FloatFielddestinné číslo realmax_value, min_valueTextInputrequired, invalid, max_value, min_value
IntegerFieldcelé číslomax_value, min_valueTextInputrequired, invalid, max_value, min_value
Volby z možností (choice)popisparametrywidgeterr klíče
ChoiceFieldvýběr z daných možnostíchoices - list, nebo tuple obsahující dvoupložková tuple (value, text do selectu)Selectrequired, invalid_choice
MultipleChoiceFieldjako Choice, ale můžeš vybrat víc možností; vrací seznamchoicesSelectMutliplerequired, invalid_choice, invalid_list
TypedChoiceFielddtto Choice plus vynutí vrácený typchoices, coerce, empty_valueSelectrequired, invalid_choice
TypedMultipleChoiceFieldkombinace výše uvedeného :-)
Logický typpopisparametrywidgeterr klíče
BooleanFieldjasný, ale podivná poznámka v dokumentaci ohledně requiredCheckboxInputrequired
NullBooleanFieldboolean + nic možnost jako SelectNullBooleanSelectnevaliduje se
Datum, časpopisparametrywidgeterr klíče
DateFieldzadání datainput_formats jako seznamDateInputrequired, invalid
TimeFieldzadání časuinput_formatsTextInputrequired, invalid
DateTimeFieldzadání data a časuinput_formatsDateTimeInputrequired, invalid
SplitDateTimeFieldDatum a čas je možné zadat ve dvou oddělených polích. Vrací jeden datetime.datetime objekt.input_date_formats, input_time_formatsSplitDateTimeWidgetrequired, invalid, invalid_date, invalid_time
Souborypopisparametrywidgeterr klíče
FileFieldsoubor k nahrání ClearableFileInputrequired, invalid, missing, empty, max_length
ImageFieldjako File, ale musí být to obrázek ClearableFileInputrequired, invalid, missing, empty, invalid_image
FilePathFieldgeneruje select z jmen souborů v daném adresářipath, recursive, match, allow_files, allow_foldersSelectrequired, invalid_choice
IP, URLpopisparametrywidgeterr klíče
IPAddressFieldvstup pro IPv4 adresu TextInputrequired, invalid
GenericIPAddressFieldvstup pro IPv4 i IPv6 adresuprotocol, unpack_ipv4TextInputrequired, invalid
URLFieldvstup pro validní URLmax_length, min_lengthTextInputrequired, invalid
Komplexnější typypopisparametrywidgeterr klíče
ComboField fields - seznam polí, která budou použita jako validátoryTextInputrequired, invalid
MultiValueFieldAgreguje logiku více polí generujících jednu hodnotufields, widget, compressTextInputrequired, invalid
Obsluha relacípopisparametrywidgeterr klíče
ModelChoiceFieldGeneruje Select z QuerySetu. Užití u cizích klíčůqueryset, empty_labelSelectrequired, invalid_choice
ModelMultipleChoiceFielddtto ModelChoiceField s možností vybrat víc možností. Užití u many-to-many.qureysetSelectMultiplerequired, list, invalid_choice, invalid_pk_value

Poznámka k ModelChoiceField a ModelMultipleChoiceField:

Text do Selectu je brán z metody __unicode__ nadřízeného modelu. Pokud to nevyhovuje, můžeme si udělat vlastní class a přetížit metodu label_from_instance

 class MyModelChoiceField(ModelChoiceField):
     def label_from_instance(self, obj):
         return "My Object #%i" % obj.id

1.4  Vlastní upravená formulářová pole

Vytvořit podtřídu django.forms.Field. Musí implementovat metodu clean() a metoda __init__ musí přijímat obecné argumenty pole: required, label, initial, widget, help_text.