2020-06-13 00:36:45 +02:00
<!DOCTYPE html>
2020-06-14 21:48:02 +02:00
2020-06-15 21:52:33 +02:00
< html xmlns = "http://www.w3.org/1999/xhtml" >
< head >
< meta charset = "utf-8" / >
< title > django.forms.models — Evennia 1.0-dev documentation< / title >
< link rel = "stylesheet" href = "../../../_static/nature.css" type = "text/css" / >
< link rel = "stylesheet" href = "../../../_static/pygments.css" type = "text/css" / >
< script id = "documentation_options" data-url_root = "../../../" src = "../../../_static/documentation_options.js" > < / script >
< script src = "../../../_static/jquery.js" > < / script >
< script src = "../../../_static/underscore.js" > < / script >
< script src = "../../../_static/doctools.js" > < / script >
< script src = "../../../_static/language_data.js" > < / script >
< link rel = "shortcut icon" href = "../../../_static/favicon.ico" / >
< link rel = "index" title = "Index" href = "../../../genindex.html" / >
< link rel = "search" title = "Search" href = "../../../search.html" / >
< / head > < body >
< div class = "related" role = "navigation" aria-label = "related navigation" >
< h3 > Navigation< / h3 >
< ul >
< li class = "right" style = "margin-right: 10px" >
< a href = "../../../genindex.html" title = "General Index"
accesskey="I">index< / a > < / li >
< li class = "right" >
< a href = "../../../py-modindex.html" title = "Python Module Index"
>modules< / a > |< / li >
< li class = "nav-item nav-item-0" > < a href = "../../../index.html" > Evennia 1.0-dev documentation< / a > » < / li >
< li class = "nav-item nav-item-1" > < a href = "../../index.html" accesskey = "U" > Module code< / a > » < / li >
< / ul >
< / div >
< div class = "document" >
< div class = "documentwrapper" >
< div class = "bodywrapper" >
< div class = "body" role = "main" >
2020-06-13 00:36:45 +02:00
< h1 > Source code for django.forms.models< / h1 > < div class = "highlight" > < pre >
< span > < / span > < span class = "sd" > " " " < / span >
< span class = "sd" > Helper functions for creating Form classes from Django models< / span >
< span class = "sd" > and database field objects.< / span >
< span class = "sd" > " " " < / span >
< span class = "kn" > from< / span > < span class = "nn" > collections< / span > < span class = "k" > import< / span > < span class = "n" > OrderedDict< / span >
< span class = "kn" > from< / span > < span class = "nn" > itertools< / span > < span class = "k" > import< / span > < span class = "n" > chain< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.core.exceptions< / span > < span class = "k" > import< / span > < span class = "p" > (< / span >
< span class = "n" > NON_FIELD_ERRORS< / span > < span class = "p" > ,< / span > < span class = "n" > FieldError< / span > < span class = "p" > ,< / span > < span class = "n" > ImproperlyConfigured< / span > < span class = "p" > ,< / span > < span class = "n" > ValidationError< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.forms.fields< / span > < span class = "k" > import< / span > < span class = "n" > ChoiceField< / span > < span class = "p" > ,< / span > < span class = "n" > Field< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.forms.forms< / span > < span class = "k" > import< / span > < span class = "n" > BaseForm< / span > < span class = "p" > ,< / span > < span class = "n" > DeclarativeFieldsMetaclass< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.forms.formsets< / span > < span class = "k" > import< / span > < span class = "n" > BaseFormSet< / span > < span class = "p" > ,< / span > < span class = "n" > formset_factory< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.forms.utils< / span > < span class = "k" > import< / span > < span class = "n" > ErrorList< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.forms.widgets< / span > < span class = "k" > import< / span > < span class = "p" > (< / span >
< span class = "n" > HiddenInput< / span > < span class = "p" > ,< / span > < span class = "n" > MultipleHiddenInput< / span > < span class = "p" > ,< / span > < span class = "n" > SelectMultiple< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.utils.text< / span > < span class = "k" > import< / span > < span class = "n" > capfirst< / span > < span class = "p" > ,< / span > < span class = "n" > get_text_list< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.utils.translation< / span > < span class = "k" > import< / span > < span class = "n" > gettext< / span > < span class = "p" > ,< / span > < span class = "n" > gettext_lazy< / span > < span class = "k" > as< / span > < span class = "n" > _< / span >
< span class = "n" > __all__< / span > < span class = "o" > =< / span > < span class = "p" > (< / span >
< span class = "s1" > ' ModelForm' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' BaseModelForm' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' model_to_dict' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' fields_for_model' < / span > < span class = "p" > ,< / span >
< span class = "s1" > ' ModelChoiceField' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ModelMultipleChoiceField' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ALL_FIELDS' < / span > < span class = "p" > ,< / span >
< span class = "s1" > ' BaseModelFormSet' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' modelformset_factory' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' BaseInlineFormSet' < / span > < span class = "p" > ,< / span >
< span class = "s1" > ' inlineformset_factory' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' modelform_factory' < / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "n" > ALL_FIELDS< / span > < span class = "o" > =< / span > < span class = "s1" > ' __all__' < / span >
< span class = "k" > def< / span > < span class = "nf" > construct_instance< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Construct and return a model instance from the bound ``form``' s< / span >
< span class = "sd" > ``cleaned_data``, but do not save the returned instance to the database.< / span >
< span class = "sd" > " " " < / span >
< span class = "kn" > from< / span > < span class = "nn" > django.db< / span > < span class = "k" > import< / span > < span class = "n" > models< / span >
< span class = "n" > opts< / span > < span class = "o" > =< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span >
< span class = "n" > cleaned_data< / span > < span class = "o" > =< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span >
< span class = "n" > file_field_list< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > editable< / span > < span class = "ow" > or< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > ,< / span > < span class = "n" > models< / span > < span class = "o" > .< / span > < span class = "n" > AutoField< / span > < span class = "p" > )< / span > \
< span class = "ow" > or< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "k" > if< / span > < span class = "n" > fields< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "k" > if< / span > < span class = "n" > exclude< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > exclude< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "c1" > # Leave defaults for fields that aren' t in POST data, except for< / span >
< span class = "c1" > # checkbox inputs because they don' t appear in POST data if not checked.< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > has_default< / span > < span class = "p" > ()< / span > < span class = "ow" > and< / span >
< span class = "n" > form< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > widget< / span > < span class = "o" > .< / span > < span class = "n" > value_omitted_from_data< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > data< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > files< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > add_prefix< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ))):< / span >
< span class = "k" > continue< / span >
< span class = "c1" > # Defer saving file-type fields until after the other fields, so a< / span >
< span class = "c1" > # callable upload_to can use the values from other fields.< / span >
< span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > ,< / span > < span class = "n" > models< / span > < span class = "o" > .< / span > < span class = "n" > FileField< / span > < span class = "p" > ):< / span >
< span class = "n" > file_field_list< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > save_form_data< / span > < span class = "p" > (< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ])< / span >
< span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > file_field_list< / span > < span class = "p" > :< / span >
< span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > save_form_data< / span > < span class = "p" > (< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ])< / span >
< span class = "k" > return< / span > < span class = "n" > instance< / span >
< span class = "c1" > # ModelForms #################################################################< / span >
< span class = "k" > def< / span > < span class = "nf" > model_to_dict< / span > < span class = "p" > (< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Return a dict containing the data in ``instance`` suitable for passing as< / span >
< span class = "sd" > a Form' s ``initial`` keyword argument.< / span >
< span class = "sd" > ``fields`` is an optional list of field names. If provided, return only the< / span >
< span class = "sd" > named.< / span >
< span class = "sd" > ``exclude`` is an optional list of field names. If provided, exclude the< / span >
< span class = "sd" > named from the returned dict, even if they are listed in the ``fields``< / span >
< span class = "sd" > argument.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > opts< / span > < span class = "o" > =< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span >
< span class = "n" > data< / span > < span class = "o" > =< / span > < span class = "p" > {}< / span >
< span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > chain< / span > < span class = "p" > (< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > concrete_fields< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > private_fields< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > many_to_many< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > ,< / span > < span class = "s1" > ' editable' < / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > ):< / span >
< span class = "k" > continue< / span >
< span class = "k" > if< / span > < span class = "n" > fields< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "k" > if< / span > < span class = "n" > exclude< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > exclude< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "n" > data< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > value_from_object< / span > < span class = "p" > (< / span > < span class = "n" > instance< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > data< / span >
< span class = "k" > def< / span > < span class = "nf" > apply_limit_choices_to_to_formfield< / span > < span class = "p" > (< / span > < span class = "n" > formfield< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " Apply limit_choices_to to the formfield' s queryset if needed." " " < / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > formfield< / span > < span class = "p" > ,< / span > < span class = "s1" > ' queryset' < / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > formfield< / span > < span class = "p" > ,< / span > < span class = "s1" > ' get_limit_choices_to' < / span > < span class = "p" > ):< / span >
< span class = "n" > limit_choices_to< / span > < span class = "o" > =< / span > < span class = "n" > formfield< / span > < span class = "o" > .< / span > < span class = "n" > get_limit_choices_to< / span > < span class = "p" > ()< / span >
< span class = "k" > if< / span > < span class = "n" > limit_choices_to< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > formfield< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "n" > formfield< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > complex_filter< / span > < span class = "p" > (< / span > < span class = "n" > limit_choices_to< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > fields_for_model< / span > < span class = "p" > (< / span > < span class = "n" > model< / span > < span class = "p" > ,< / span > < span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > widgets< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > formfield_callback< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > localized_fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > labels< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > help_texts< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > error_messages< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > field_classes< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "p" > ,< / span > < span class = "n" > apply_limit_choices_to< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Return an ``OrderedDict`` containing form fields for the given model.< / span >
< span class = "sd" > ``fields`` is an optional list of field names. If provided, return only the< / span >
< span class = "sd" > named fields.< / span >
< span class = "sd" > ``exclude`` is an optional list of field names. If provided, exclude the< / span >
< span class = "sd" > named fields from the returned fields, even if they are listed in the< / span >
< span class = "sd" > ``fields`` argument.< / span >
< span class = "sd" > ``widgets`` is a dictionary of model field names mapped to a widget.< / span >
< span class = "sd" > ``formfield_callback`` is a callable that takes a model field and returns< / span >
< span class = "sd" > a form field.< / span >
< span class = "sd" > ``localized_fields`` is a list of names of fields which should be localized.< / span >
< span class = "sd" > ``labels`` is a dictionary of model field names mapped to a label.< / span >
< span class = "sd" > ``help_texts`` is a dictionary of model field names mapped to a help text.< / span >
< span class = "sd" > ``error_messages`` is a dictionary of model field names mapped to a< / span >
< span class = "sd" > dictionary of error messages.< / span >
< span class = "sd" > ``field_classes`` is a dictionary of model field names mapped to a form< / span >
< span class = "sd" > field class.< / span >
< span class = "sd" > ``apply_limit_choices_to`` is a boolean indicating if limit_choices_to< / span >
< span class = "sd" > should be applied to a field' s queryset.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > field_list< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "n" > ignored< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "n" > opts< / span > < span class = "o" > =< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span >
< span class = "c1" > # Avoid circular import< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.db.models.fields< / span > < span class = "k" > import< / span > < span class = "n" > Field< / span > < span class = "k" > as< / span > < span class = "n" > ModelField< / span >
< span class = "n" > sortable_private_fields< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > private_fields< / span > < span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > ,< / span > < span class = "n" > ModelField< / span > < span class = "p" > )]< / span >
< span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "nb" > sorted< / span > < span class = "p" > (< / span > < span class = "n" > chain< / span > < span class = "p" > (< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > concrete_fields< / span > < span class = "p" > ,< / span > < span class = "n" > sortable_private_fields< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > many_to_many< / span > < span class = "p" > )):< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > ,< / span > < span class = "s1" > ' editable' < / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "n" > fields< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > fields< / span > < span class = "ow" > and< / span >
< span class = "p" > (< / span > < span class = "n" > exclude< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "ow" > or< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > exclude< / span > < span class = "p" > )):< / span >
< span class = "k" > raise< / span > < span class = "n" > FieldError< / span > < span class = "p" > (< / span >
< span class = "s2" > " ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' cannot be specified for < / span > < span class = "si" > %s< / span > < span class = "s2" > model form as it is a non-editable field" < / span > < span class = "o" > %< / span > < span class = "p" > (< / span >
< span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "vm" > __name__< / span > < span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "k" > continue< / span >
< span class = "k" > if< / span > < span class = "n" > fields< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "k" > if< / span > < span class = "n" > exclude< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > exclude< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "n" > kwargs< / span > < span class = "o" > =< / span > < span class = "p" > {}< / span >
< span class = "k" > if< / span > < span class = "n" > widgets< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > widgets< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' widget' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > widgets< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "n" > localized_fields< / span > < span class = "o" > ==< / span > < span class = "n" > ALL_FIELDS< / span > < span class = "ow" > or< / span > < span class = "p" > (< / span > < span class = "n" > localized_fields< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > localized_fields< / span > < span class = "p" > ):< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' localize' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span >
< span class = "k" > if< / span > < span class = "n" > labels< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > labels< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' label' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > labels< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "n" > help_texts< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > help_texts< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' help_text' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > help_texts< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "n" > error_messages< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > error_messages< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' error_messages' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "n" > field_classes< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > field_classes< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' form_class' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > field_classes< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "n" > formfield_callback< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > formfield< / span > < span class = "o" > =< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > formfield< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "ow" > not< / span > < span class = "n" > callable< / span > < span class = "p" > (< / span > < span class = "n" > formfield_callback< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "ne" > TypeError< / span > < span class = "p" > (< / span > < span class = "s1" > ' formfield_callback must be a function or callable' < / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > formfield< / span > < span class = "o" > =< / span > < span class = "n" > formfield_callback< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > formfield< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "n" > apply_limit_choices_to< / span > < span class = "p" > :< / span >
< span class = "n" > apply_limit_choices_to_to_formfield< / span > < span class = "p" > (< / span > < span class = "n" > formfield< / span > < span class = "p" > )< / span >
< span class = "n" > field_list< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > ((< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > formfield< / span > < span class = "p" > ))< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > ignored< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "n" > field_dict< / span > < span class = "o" > =< / span > < span class = "n" > OrderedDict< / span > < span class = "p" > (< / span > < span class = "n" > field_list< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "n" > field_dict< / span > < span class = "o" > =< / span > < span class = "n" > OrderedDict< / span > < span class = "p" > (< / span >
< span class = "p" > [(< / span > < span class = "n" > f< / span > < span class = "p" > ,< / span > < span class = "n" > field_dict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > ))< / span > < span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > fields< / span >
< span class = "k" > if< / span > < span class = "p" > ((< / span > < span class = "ow" > not< / span > < span class = "n" > exclude< / span > < span class = "p" > )< / span > < span class = "ow" > or< / span > < span class = "p" > (< / span > < span class = "n" > exclude< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > exclude< / span > < span class = "p" > ))< / span > < span class = "ow" > and< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > ignored< / span > < span class = "p" > )]< / span >
< span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > field_dict< / span >
< span class = "k" > class< / span > < span class = "nc" > ModelFormOptions< / span > < span class = "p" > :< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > options< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > options< / span > < span class = "p" > ,< / span > < span class = "s1" > ' model' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > options< / span > < span class = "p" > ,< / span > < span class = "s1" > ' fields' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > options< / span > < span class = "p" > ,< / span > < span class = "s1" > ' exclude' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > widgets< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > options< / span > < span class = "p" > ,< / span > < span class = "s1" > ' widgets' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > localized_fields< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > options< / span > < span class = "p" > ,< / span > < span class = "s1" > ' localized_fields' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > labels< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > options< / span > < span class = "p" > ,< / span > < span class = "s1" > ' labels' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > help_texts< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > options< / span > < span class = "p" > ,< / span > < span class = "s1" > ' help_texts' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > options< / span > < span class = "p" > ,< / span > < span class = "s1" > ' error_messages' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field_classes< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > options< / span > < span class = "p" > ,< / span > < span class = "s1" > ' field_classes' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "k" > class< / span > < span class = "nc" > ModelFormMetaclass< / span > < span class = "p" > (< / span > < span class = "n" > DeclarativeFieldsMetaclass< / span > < span class = "p" > ):< / span >
< span class = "k" > def< / span > < span class = "nf" > __new__< / span > < span class = "p" > (< / span > < span class = "n" > mcs< / span > < span class = "p" > ,< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > bases< / span > < span class = "p" > ,< / span > < span class = "n" > attrs< / span > < span class = "p" > ):< / span >
< span class = "n" > base_formfield_callback< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > for< / span > < span class = "n" > b< / span > < span class = "ow" > in< / span > < span class = "n" > bases< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > b< / span > < span class = "p" > ,< / span > < span class = "s1" > ' Meta' < / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > b< / span > < span class = "o" > .< / span > < span class = "n" > Meta< / span > < span class = "p" > ,< / span > < span class = "s1" > ' formfield_callback' < / span > < span class = "p" > ):< / span >
< span class = "n" > base_formfield_callback< / span > < span class = "o" > =< / span > < span class = "n" > b< / span > < span class = "o" > .< / span > < span class = "n" > Meta< / span > < span class = "o" > .< / span > < span class = "n" > formfield_callback< / span >
< span class = "k" > break< / span >
< span class = "n" > formfield_callback< / span > < span class = "o" > =< / span > < span class = "n" > attrs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s1" > ' formfield_callback' < / span > < span class = "p" > ,< / span > < span class = "n" > base_formfield_callback< / span > < span class = "p" > )< / span >
< span class = "n" > new_class< / span > < span class = "o" > =< / span > < span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > ModelFormMetaclass< / span > < span class = "p" > ,< / span > < span class = "n" > mcs< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "fm" > __new__< / span > < span class = "p" > (< / span > < span class = "n" > mcs< / span > < span class = "p" > ,< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > bases< / span > < span class = "p" > ,< / span > < span class = "n" > attrs< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > bases< / span > < span class = "o" > ==< / span > < span class = "p" > (< / span > < span class = "n" > BaseModelForm< / span > < span class = "p" > ,):< / span >
< span class = "k" > return< / span > < span class = "n" > new_class< / span >
< span class = "n" > opts< / span > < span class = "o" > =< / span > < span class = "n" > new_class< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > =< / span > < span class = "n" > ModelFormOptions< / span > < span class = "p" > (< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > new_class< / span > < span class = "p" > ,< / span > < span class = "s1" > ' Meta' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > ))< / span >
< span class = "c1" > # We check if a string was passed to `fields` or `exclude`,< / span >
< span class = "c1" > # which is likely to be a mistake where the user typed (' foo' ) instead< / span >
< span class = "c1" > # of (' foo' ,)< / span >
< span class = "k" > for< / span > < span class = "n" > opt< / span > < span class = "ow" > in< / span > < span class = "p" > [< / span > < span class = "s1" > ' fields' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' exclude' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' localized_fields' < / span > < span class = "p" > ]:< / span >
< span class = "n" > value< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > opts< / span > < span class = "p" > ,< / span > < span class = "n" > opt< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > ,< / span > < span class = "nb" > str< / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "n" > value< / span > < span class = "o" > !=< / span > < span class = "n" > ALL_FIELDS< / span > < span class = "p" > :< / span >
< span class = "n" > msg< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "si" > %(model)s< / span > < span class = "s2" > .Meta.< / span > < span class = "si" > %(opt)s< / span > < span class = "s2" > cannot be a string. " < / span >
< span class = "s2" > " Did you mean to type: (' < / span > < span class = "si" > %(value)s< / span > < span class = "s2" > ' ,)?" < / span > < span class = "o" > %< / span > < span class = "p" > {< / span >
< span class = "s1" > ' model' < / span > < span class = "p" > :< / span > < span class = "n" > new_class< / span > < span class = "o" > .< / span > < span class = "vm" > __name__< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' opt' < / span > < span class = "p" > :< / span > < span class = "n" > opt< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' value' < / span > < span class = "p" > :< / span > < span class = "n" > value< / span > < span class = "p" > ,< / span >
< span class = "p" > })< / span >
< span class = "k" > raise< / span > < span class = "ne" > TypeError< / span > < span class = "p" > (< / span > < span class = "n" > msg< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "p" > :< / span >
< span class = "c1" > # If a model is defined, extract form fields from it.< / span >
< span class = "k" > if< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "ow" > and< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > exclude< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "n" > ImproperlyConfigured< / span > < span class = "p" > (< / span >
< span class = "s2" > " Creating a ModelForm without either the ' fields' attribute " < / span >
< span class = "s2" > " or the ' exclude' attribute is prohibited; form < / span > < span class = "si" > %s< / span > < span class = "s2" > " < / span >
< span class = "s2" > " needs updating." < / span > < span class = "o" > %< / span > < span class = "n" > name< / span >
< span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "o" > ==< / span > < span class = "n" > ALL_FIELDS< / span > < span class = "p" > :< / span >
< span class = "c1" > # Sentinel for fields_for_model to indicate " get the list of< / span >
< span class = "c1" > # fields from the model" < / span >
< span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "n" > fields_for_model< / span > < span class = "p" > (< / span >
< span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > exclude< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > widgets< / span > < span class = "p" > ,< / span >
< span class = "n" > formfield_callback< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > localized_fields< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > labels< / span > < span class = "p" > ,< / span >
< span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > help_texts< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > field_classes< / span > < span class = "p" > ,< / span >
< span class = "c1" > # limit_choices_to will be applied during ModelForm.__init__().< / span >
< span class = "n" > apply_limit_choices_to< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "c1" > # make sure opts.fields doesn' t specify an invalid field< / span >
< span class = "n" > none_model_fields< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "n" > k< / span > < span class = "k" > for< / span > < span class = "n" > k< / span > < span class = "p" > ,< / span > < span class = "n" > v< / span > < span class = "ow" > in< / span > < span class = "n" > fields< / span > < span class = "o" > .< / span > < span class = "n" > items< / span > < span class = "p" > ()< / span > < span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > v< / span > < span class = "p" > }< / span >
< span class = "n" > missing_fields< / span > < span class = "o" > =< / span > < span class = "n" > none_model_fields< / span > < span class = "o" > .< / span > < span class = "n" > difference< / span > < span class = "p" > (< / span > < span class = "n" > new_class< / span > < span class = "o" > .< / span > < span class = "n" > declared_fields< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > missing_fields< / span > < span class = "p" > :< / span >
< span class = "n" > message< / span > < span class = "o" > =< / span > < span class = "s1" > ' Unknown field(s) (< / span > < span class = "si" > %s< / span > < span class = "s1" > ) specified for < / span > < span class = "si" > %s< / span > < span class = "s1" > ' < / span >
< span class = "n" > message< / span > < span class = "o" > =< / span > < span class = "n" > message< / span > < span class = "o" > %< / span > < span class = "p" > (< / span > < span class = "s1" > ' , ' < / span > < span class = "o" > .< / span > < span class = "n" > join< / span > < span class = "p" > (< / span > < span class = "n" > missing_fields< / span > < span class = "p" > ),< / span >
< span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "vm" > __name__< / span > < span class = "p" > )< / span >
< span class = "k" > raise< / span > < span class = "n" > FieldError< / span > < span class = "p" > (< / span > < span class = "n" > message< / span > < span class = "p" > )< / span >
< span class = "c1" > # Override default model fields with any custom declared ones< / span >
< span class = "c1" > # (plus, include all the other declared fields).< / span >
< span class = "n" > fields< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span > < span class = "n" > new_class< / span > < span class = "o" > .< / span > < span class = "n" > declared_fields< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "n" > new_class< / span > < span class = "o" > .< / span > < span class = "n" > declared_fields< / span >
< span class = "n" > new_class< / span > < span class = "o" > .< / span > < span class = "n" > base_fields< / span > < span class = "o" > =< / span > < span class = "n" > fields< / span >
< span class = "k" > return< / span > < span class = "n" > new_class< / span >
< span class = "k" > class< / span > < span class = "nc" > BaseModelForm< / span > < span class = "p" > (< / span > < span class = "n" > BaseForm< / span > < span class = "p" > ):< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > data< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > files< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > auto_id< / span > < span class = "o" > =< / span > < span class = "s1" > ' id_< / span > < span class = "si" > %s< / span > < span class = "s1" > ' < / span > < span class = "p" > ,< / span > < span class = "n" > prefix< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > initial< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > error_class< / span > < span class = "o" > =< / span > < span class = "n" > ErrorList< / span > < span class = "p" > ,< / span > < span class = "n" > label_suffix< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > empty_permitted< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "n" > instance< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > use_required_attribute< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > renderer< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "n" > opts< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span >
< span class = "k" > if< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "ne" > ValueError< / span > < span class = "p" > (< / span > < span class = "s1" > ' ModelForm has no model class specified.' < / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > instance< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "c1" > # if we didn' t get an instance, instantiate a new one< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > =< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "p" > ()< / span >
< span class = "n" > object_data< / span > < span class = "o" > =< / span > < span class = "p" > {}< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > =< / span > < span class = "n" > instance< / span >
< span class = "n" > object_data< / span > < span class = "o" > =< / span > < span class = "n" > model_to_dict< / span > < span class = "p" > (< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > exclude< / span > < span class = "p" > )< / span >
< span class = "c1" > # if initial was provided, it should override the values from instance< / span >
< span class = "k" > if< / span > < span class = "n" > initial< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > object_data< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span > < span class = "n" > initial< / span > < span class = "p" > )< / span >
< span class = "c1" > # self._validate_unique will be set to True by BaseModelForm.clean().< / span >
< span class = "c1" > # It is False by default so overriding self.clean() and failing to call< / span >
< span class = "c1" > # super will stop validate_unique from being called.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _validate_unique< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span >
< span class = "n" > data< / span > < span class = "p" > ,< / span > < span class = "n" > files< / span > < span class = "p" > ,< / span > < span class = "n" > auto_id< / span > < span class = "p" > ,< / span > < span class = "n" > prefix< / span > < span class = "p" > ,< / span > < span class = "n" > object_data< / span > < span class = "p" > ,< / span > < span class = "n" > error_class< / span > < span class = "p" > ,< / span >
< span class = "n" > label_suffix< / span > < span class = "p" > ,< / span > < span class = "n" > empty_permitted< / span > < span class = "p" > ,< / span > < span class = "n" > use_required_attribute< / span > < span class = "o" > =< / span > < span class = "n" > use_required_attribute< / span > < span class = "p" > ,< / span >
< span class = "n" > renderer< / span > < span class = "o" > =< / span > < span class = "n" > renderer< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "k" > for< / span > < span class = "n" > formfield< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "o" > .< / span > < span class = "n" > values< / span > < span class = "p" > ():< / span >
< span class = "n" > apply_limit_choices_to_to_formfield< / span > < span class = "p" > (< / span > < span class = "n" > formfield< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > _get_validation_exclusions< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > For backwards-compatibility, exclude several types of fields from model< / span >
< span class = "sd" > validation. See tickets #12507, #12521, #12553.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "c1" > # Build up a list of fields that should be excluded from model field< / span >
< span class = "c1" > # validation and unique checks.< / span >
< span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "n" > field< / span > < span class = "o" > =< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span >
< span class = "c1" > # Exclude fields that aren' t on the form. The developer may be< / span >
< span class = "c1" > # adding these values to the model after form validation.< / span >
< span class = "k" > if< / span > < span class = "n" > field< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "n" > exclude< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "c1" > # Don' t perform model validation on fields that were defined< / span >
< span class = "c1" > # manually on the form and excluded via the ModelForm' s Meta< / span >
< span class = "c1" > # class. See #12901.< / span >
< span class = "k" > elif< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "ow" > and< / span > < span class = "n" > field< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "n" > exclude< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > exclude< / span > < span class = "ow" > and< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > exclude< / span > < span class = "p" > :< / span >
< span class = "n" > exclude< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "c1" > # Exclude fields that failed form validation. There' s no need for< / span >
< span class = "c1" > # the model fields to validate them as well.< / span >
< span class = "k" > elif< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _errors< / span > < span class = "p" > :< / span >
< span class = "n" > exclude< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "c1" > # Exclude empty fields that are not required by the form, if the< / span >
< span class = "c1" > # underlying model field is required. This keeps the model field< / span >
< span class = "c1" > # from raising a required error. Note: don' t exclude the field from< / span >
< span class = "c1" > # validation if the model field allows blanks. If it does, the blank< / span >
< span class = "c1" > # value may be included in a unique check, so cannot be excluded< / span >
< span class = "c1" > # from validation.< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > form_field< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > [< / span > < span class = "n" > field< / span > < span class = "p" > ]< / span >
< span class = "n" > field_value< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "n" > field< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > blank< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "n" > form_field< / span > < span class = "o" > .< / span > < span class = "n" > required< / span > < span class = "ow" > and< / span > < span class = "n" > field_value< / span > < span class = "ow" > in< / span > < span class = "n" > form_field< / span > < span class = "o" > .< / span > < span class = "n" > empty_values< / span > < span class = "p" > :< / span >
< span class = "n" > exclude< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > exclude< / span >
< span class = "k" > def< / span > < span class = "nf" > clean< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _validate_unique< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span >
< span class = "k" > def< / span > < span class = "nf" > _update_errors< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > errors< / span > < span class = "p" > ):< / span >
< span class = "c1" > # Override any validation error messages defined at the model level< / span >
< span class = "c1" > # with those defined at the form level.< / span >
< span class = "n" > opts< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span >
< span class = "c1" > # Allow the model generated by construct_instance() to raise< / span >
< span class = "c1" > # ValidationError and have them handled in the same way as others.< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > errors< / span > < span class = "p" > ,< / span > < span class = "s1" > ' error_dict' < / span > < span class = "p" > ):< / span >
< span class = "n" > error_dict< / span > < span class = "o" > =< / span > < span class = "n" > errors< / span > < span class = "o" > .< / span > < span class = "n" > error_dict< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > error_dict< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "n" > NON_FIELD_ERRORS< / span > < span class = "p" > :< / span > < span class = "n" > errors< / span > < span class = "p" > }< / span >
< span class = "k" > for< / span > < span class = "n" > field< / span > < span class = "p" > ,< / span > < span class = "n" > messages< / span > < span class = "ow" > in< / span > < span class = "n" > error_dict< / span > < span class = "o" > .< / span > < span class = "n" > items< / span > < span class = "p" > ():< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "n" > field< / span > < span class = "o" > ==< / span > < span class = "n" > NON_FIELD_ERRORS< / span > < span class = "ow" > and< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "ow" > and< / span >
< span class = "n" > NON_FIELD_ERRORS< / span > < span class = "ow" > in< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > ):< / span >
< span class = "n" > error_messages< / span > < span class = "o" > =< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "n" > NON_FIELD_ERRORS< / span > < span class = "p" > ]< / span >
< span class = "k" > elif< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "n" > error_messages< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > [< / span > < span class = "n" > field< / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "k" > for< / span > < span class = "n" > message< / span > < span class = "ow" > in< / span > < span class = "n" > messages< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > message< / span > < span class = "p" > ,< / span > < span class = "n" > ValidationError< / span > < span class = "p" > )< / span > < span class = "ow" > and< / span >
< span class = "n" > message< / span > < span class = "o" > .< / span > < span class = "n" > code< / span > < span class = "ow" > in< / span > < span class = "n" > error_messages< / span > < span class = "p" > ):< / span >
< span class = "n" > message< / span > < span class = "o" > .< / span > < span class = "n" > message< / span > < span class = "o" > =< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "n" > message< / span > < span class = "o" > .< / span > < span class = "n" > code< / span > < span class = "p" > ]< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > add_error< / span > < span class = "p" > (< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > errors< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > _post_clean< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "n" > opts< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span >
< span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _get_validation_exclusions< / span > < span class = "p" > ()< / span >
< span class = "c1" > # Foreign Keys being used to represent inline relationships< / span >
< span class = "c1" > # are excluded from basic field value validation. This is for two< / span >
< span class = "c1" > # reasons: firstly, the value may not be supplied (#12507; the< / span >
< span class = "c1" > # case of providing new values to the admin); secondly the< / span >
< span class = "c1" > # object being referred to may not yet fully exist (#12749).< / span >
< span class = "c1" > # However, these fields *must* be included in uniqueness checks,< / span >
< span class = "c1" > # so this can' t be part of _get_validation_exclusions().< / span >
< span class = "k" > for< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "o" > .< / span > < span class = "n" > items< / span > < span class = "p" > ():< / span >
< span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > field< / span > < span class = "p" > ,< / span > < span class = "n" > InlineForeignKeyField< / span > < span class = "p" > ):< / span >
< span class = "n" > exclude< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > =< / span > < span class = "n" > construct_instance< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > exclude< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "n" > ValidationError< / span > < span class = "k" > as< / span > < span class = "n" > e< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _update_errors< / span > < span class = "p" > (< / span > < span class = "n" > e< / span > < span class = "p" > )< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > full_clean< / span > < span class = "p" > (< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "n" > exclude< / span > < span class = "p" > ,< / span > < span class = "n" > validate_unique< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "n" > ValidationError< / span > < span class = "k" > as< / span > < span class = "n" > e< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _update_errors< / span > < span class = "p" > (< / span > < span class = "n" > e< / span > < span class = "p" > )< / span >
< span class = "c1" > # Validate uniqueness if needed.< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _validate_unique< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > validate_unique< / span > < span class = "p" > ()< / span >
< span class = "k" > def< / span > < span class = "nf" > validate_unique< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Call the instance' s validate_unique() method and update the form' s< / span >
< span class = "sd" > validation errors if any were raised.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _get_validation_exclusions< / span > < span class = "p" > ()< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > validate_unique< / span > < span class = "p" > (< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "n" > exclude< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "n" > ValidationError< / span > < span class = "k" > as< / span > < span class = "n" > e< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _update_errors< / span > < span class = "p" > (< / span > < span class = "n" > e< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > _save_m2m< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Save the many-to-many fields and generic relations for this form.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > cleaned_data< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span >
< span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > exclude< / span >
< span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span >
< span class = "n" > opts< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span >
< span class = "c1" > # Note that for historical reasons we want to include also< / span >
< span class = "c1" > # private_fields here. (GenericRelation was previously a fake< / span >
< span class = "c1" > # m2m field).< / span >
< span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > chain< / span > < span class = "p" > (< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > many_to_many< / span > < span class = "p" > ,< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > private_fields< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > ,< / span > < span class = "s1" > ' save_form_data' < / span > < span class = "p" > ):< / span >
< span class = "k" > continue< / span >
< span class = "k" > if< / span > < span class = "n" > fields< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "k" > if< / span > < span class = "n" > exclude< / span > < span class = "ow" > and< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > exclude< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "k" > if< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > in< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > :< / span >
< span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > save_form_data< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ])< / span >
< span class = "k" > def< / span > < span class = "nf" > save< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Save this form' s self.instance object if commit=True. Otherwise, add< / span >
< span class = "sd" > a save_m2m() method to the form which can be called after the instance< / span >
< span class = "sd" > is saved manually at a later time. Return the model instance.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > errors< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "ne" > ValueError< / span > < span class = "p" > (< / span >
< span class = "s2" > " The < / span > < span class = "si" > %s< / span > < span class = "s2" > could not be < / span > < span class = "si" > %s< / span > < span class = "s2" > because the data didn' t validate." < / span > < span class = "o" > %< / span > < span class = "p" > (< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > object_name< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' created' < / span > < span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _state< / span > < span class = "o" > .< / span > < span class = "n" > adding< / span > < span class = "k" > else< / span > < span class = "s1" > ' changed' < / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > commit< / span > < span class = "p" > :< / span >
< span class = "c1" > # If committing, save the instance and the m2m data immediately.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > save< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _save_m2m< / span > < span class = "p" > ()< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "c1" > # If not committing, add a method to the form to allow deferred< / span >
< span class = "c1" > # saving of m2m data.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > save_m2m< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _save_m2m< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span >
< span class = "n" > save< / span > < span class = "o" > .< / span > < span class = "n" > alters_data< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span >
< span class = "k" > class< / span > < span class = "nc" > ModelForm< / span > < span class = "p" > (< / span > < span class = "n" > BaseModelForm< / span > < span class = "p" > ,< / span > < span class = "n" > metaclass< / span > < span class = "o" > =< / span > < span class = "n" > ModelFormMetaclass< / span > < span class = "p" > ):< / span >
< span class = "k" > pass< / span >
< span class = "k" > def< / span > < span class = "nf" > modelform_factory< / span > < span class = "p" > (< / span > < span class = "n" > model< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "o" > =< / span > < span class = "n" > ModelForm< / span > < span class = "p" > ,< / span > < span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > formfield_callback< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > widgets< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > localized_fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > labels< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > help_texts< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > error_messages< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > field_classes< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Return a ModelForm containing form fields for the given model.< / span >
< span class = "sd" > ``fields`` is an optional list of field names. If provided, include only< / span >
< span class = "sd" > the named fields in the returned fields. If omitted or ' __all__' , use all< / span >
< span class = "sd" > fields.< / span >
< span class = "sd" > ``exclude`` is an optional list of field names. If provided, exclude the< / span >
< span class = "sd" > named fields from the returned fields, even if they are listed in the< / span >
< span class = "sd" > ``fields`` argument.< / span >
< span class = "sd" > ``widgets`` is a dictionary of model field names mapped to a widget.< / span >
< span class = "sd" > ``localized_fields`` is a list of names of fields which should be localized.< / span >
< span class = "sd" > ``formfield_callback`` is a callable that takes a model field and returns< / span >
< span class = "sd" > a form field.< / span >
< span class = "sd" > ``labels`` is a dictionary of model field names mapped to a label.< / span >
< span class = "sd" > ``help_texts`` is a dictionary of model field names mapped to a help text.< / span >
< span class = "sd" > ``error_messages`` is a dictionary of model field names mapped to a< / span >
< span class = "sd" > dictionary of error messages.< / span >
< span class = "sd" > ``field_classes`` is a dictionary of model field names mapped to a form< / span >
< span class = "sd" > field class.< / span >
< span class = "sd" > " " " < / span >
< span class = "c1" > # Create the inner Meta class. FIXME: ideally, we should be able to< / span >
< span class = "c1" > # construct a ModelForm without creating and passing in a temporary< / span >
< span class = "c1" > # inner class.< / span >
< span class = "c1" > # Build up a list of attributes that the Meta object will have.< / span >
< span class = "n" > attrs< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "s1" > ' model' < / span > < span class = "p" > :< / span > < span class = "n" > model< / span > < span class = "p" > }< / span >
< span class = "k" > if< / span > < span class = "n" > fields< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > attrs< / span > < span class = "p" > [< / span > < span class = "s1" > ' fields' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > fields< / span >
< span class = "k" > if< / span > < span class = "n" > exclude< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > attrs< / span > < span class = "p" > [< / span > < span class = "s1" > ' exclude' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > exclude< / span >
< span class = "k" > if< / span > < span class = "n" > widgets< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > attrs< / span > < span class = "p" > [< / span > < span class = "s1" > ' widgets' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > widgets< / span >
< span class = "k" > if< / span > < span class = "n" > localized_fields< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > attrs< / span > < span class = "p" > [< / span > < span class = "s1" > ' localized_fields' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > localized_fields< / span >
< span class = "k" > if< / span > < span class = "n" > labels< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > attrs< / span > < span class = "p" > [< / span > < span class = "s1" > ' labels' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > labels< / span >
< span class = "k" > if< / span > < span class = "n" > help_texts< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > attrs< / span > < span class = "p" > [< / span > < span class = "s1" > ' help_texts' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > help_texts< / span >
< span class = "k" > if< / span > < span class = "n" > error_messages< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > attrs< / span > < span class = "p" > [< / span > < span class = "s1" > ' error_messages' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > error_messages< / span >
< span class = "k" > if< / span > < span class = "n" > field_classes< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > attrs< / span > < span class = "p" > [< / span > < span class = "s1" > ' field_classes' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > field_classes< / span >
< span class = "c1" > # If parent form class already has an inner Meta, the Meta we' re< / span >
< span class = "c1" > # creating needs to inherit from the parent' s inner meta.< / span >
< span class = "n" > bases< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > Meta< / span > < span class = "p" > ,)< / span > < span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "s1" > ' Meta' < / span > < span class = "p" > )< / span > < span class = "k" > else< / span > < span class = "p" > ()< / span >
< span class = "n" > Meta< / span > < span class = "o" > =< / span > < span class = "nb" > type< / span > < span class = "p" > (< / span > < span class = "s1" > ' Meta' < / span > < span class = "p" > ,< / span > < span class = "n" > bases< / span > < span class = "p" > ,< / span > < span class = "n" > attrs< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > formfield_callback< / span > < span class = "p" > :< / span >
< span class = "n" > Meta< / span > < span class = "o" > .< / span > < span class = "n" > formfield_callback< / span > < span class = "o" > =< / span > < span class = "nb" > staticmethod< / span > < span class = "p" > (< / span > < span class = "n" > formfield_callback< / span > < span class = "p" > )< / span >
< span class = "c1" > # Give this new form class a reasonable name.< / span >
< span class = "n" > class_name< / span > < span class = "o" > =< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "vm" > __name__< / span > < span class = "o" > +< / span > < span class = "s1" > ' Form' < / span >
< span class = "c1" > # Class attributes for the new form class.< / span >
< span class = "n" > form_class_attrs< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s1" > ' Meta' < / span > < span class = "p" > :< / span > < span class = "n" > Meta< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' formfield_callback' < / span > < span class = "p" > :< / span > < span class = "n" > formfield_callback< / span >
< span class = "p" > }< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > Meta< / span > < span class = "p" > ,< / span > < span class = "s1" > ' fields' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "ow" > and< / span >
< span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > Meta< / span > < span class = "p" > ,< / span > < span class = "s1" > ' exclude' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "n" > ImproperlyConfigured< / span > < span class = "p" > (< / span >
< span class = "s2" > " Calling modelform_factory without defining ' fields' or " < / span >
< span class = "s2" > " ' exclude' explicitly is prohibited." < / span >
< span class = "p" > )< / span >
< span class = "c1" > # Instantiate type(form) in order to use the same metaclass as form.< / span >
< span class = "k" > return< / span > < span class = "nb" > type< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > )(< / span > < span class = "n" > class_name< / span > < span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ,),< / span > < span class = "n" > form_class_attrs< / span > < span class = "p" > )< / span >
< span class = "c1" > # ModelFormSets ##############################################################< / span >
< span class = "k" > class< / span > < span class = "nc" > BaseModelFormSet< / span > < span class = "p" > (< / span > < span class = "n" > BaseFormSet< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > A ``FormSet`` for editing a queryset and/or adding new objects to it.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > model< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "c1" > # Set of fields that must be unique among forms of this set.< / span >
< span class = "n" > unique_fields< / span > < span class = "o" > =< / span > < span class = "nb" > set< / span > < span class = "p" > ()< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > data< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > files< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > auto_id< / span > < span class = "o" > =< / span > < span class = "s1" > ' id_< / span > < span class = "si" > %s< / span > < span class = "s1" > ' < / span > < span class = "p" > ,< / span > < span class = "n" > prefix< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "p" > ,< / span > < span class = "n" > initial< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "n" > queryset< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > initial_extra< / span > < span class = "o" > =< / span > < span class = "n" > initial< / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "s1" > ' data' < / span > < span class = "p" > :< / span > < span class = "n" > data< / span > < span class = "p" > ,< / span > < span class = "s1" > ' files' < / span > < span class = "p" > :< / span > < span class = "n" > files< / span > < span class = "p" > ,< / span > < span class = "s1" > ' auto_id' < / span > < span class = "p" > :< / span > < span class = "n" > auto_id< / span > < span class = "p" > ,< / span > < span class = "s1" > ' prefix' < / span > < span class = "p" > :< / span > < span class = "n" > prefix< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > })< / span >
< span class = "k" > def< / span > < span class = "nf" > initial_form_count< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " Return the number of forms that are required in this FormSet." " " < / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > is_bound< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_queryset< / span > < span class = "p" > ())< / span >
< span class = "k" > return< / span > < span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > initial_form_count< / span > < span class = "p" > ()< / span >
< span class = "k" > def< / span > < span class = "nf" > _existing_object< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > pk< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s1" > ' _object_dict' < / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _object_dict< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "n" > o< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "p" > :< / span > < span class = "n" > o< / span > < span class = "k" > for< / span > < span class = "n" > o< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_queryset< / span > < span class = "p" > ()}< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _object_dict< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "n" > pk< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > _get_to_python< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > field< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > If the field is a related field, fetch the concrete field' s (that< / span >
< span class = "sd" > is, the ultimate pointed-to field' s) to_python.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > while< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > field< / span > < span class = "o" > =< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > get_related_field< / span > < span class = "p" > ()< / span >
< span class = "k" > return< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > to_python< / span >
< span class = "k" > def< / span > < span class = "nf" > _construct_form< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > i< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "n" > pk_required< / span > < span class = "o" > =< / span > < span class = "n" > i< / span > < span class = "o" > < < / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > initial_form_count< / span > < span class = "p" > ()< / span >
< span class = "k" > if< / span > < span class = "n" > pk_required< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > is_bound< / span > < span class = "p" > :< / span >
< span class = "n" > pk_key< / span > < span class = "o" > =< / span > < span class = "s1" > ' < / span > < span class = "si" > %s< / span > < span class = "s1" > -< / span > < span class = "si" > %s< / span > < span class = "s1" > ' < / span > < span class = "o" > %< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > add_prefix< / span > < span class = "p" > (< / span > < span class = "n" > i< / span > < span class = "p" > ),< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > pk< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > data< / span > < span class = "p" > [< / span > < span class = "n" > pk_key< / span > < span class = "p" > ]< / span >
< span class = "k" > except< / span > < span class = "ne" > KeyError< / span > < span class = "p" > :< / span >
< span class = "c1" > # The primary key is missing. The user may have tampered< / span >
< span class = "c1" > # with POST data.< / span >
< span class = "k" > pass< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > to_python< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _get_to_python< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "p" > )< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > pk< / span > < span class = "o" > =< / span > < span class = "n" > to_python< / span > < span class = "p" > (< / span > < span class = "n" > pk< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "n" > ValidationError< / span > < span class = "p" > :< / span >
< span class = "c1" > # The primary key exists but is an invalid value. The< / span >
< span class = "c1" > # user may have tampered with POST data.< / span >
< span class = "k" > pass< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' instance' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _existing_object< / span > < span class = "p" > (< / span > < span class = "n" > pk< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' instance' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_queryset< / span > < span class = "p" > ()[< / span > < span class = "n" > i< / span > < span class = "p" > ]< / span >
< span class = "k" > elif< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > initial_extra< / span > < span class = "p" > :< / span >
< span class = "c1" > # Set initial values for extra forms< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' initial' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > initial_extra< / span > < span class = "p" > [< / span > < span class = "n" > i< / span > < span class = "o" > -< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > initial_form_count< / span > < span class = "p" > ()]< / span >
< span class = "k" > except< / span > < span class = "ne" > IndexError< / span > < span class = "p" > :< / span >
< span class = "k" > pass< / span >
< span class = "n" > form< / span > < span class = "o" > =< / span > < span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > _construct_form< / span > < span class = "p" > (< / span > < span class = "n" > i< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > pk_required< / span > < span class = "p" > :< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > [< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > required< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span >
< span class = "k" > return< / span > < span class = "n" > form< / span >
< span class = "k" > def< / span > < span class = "nf" > get_queryset< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s1" > ' _queryset' < / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _default_manager< / span > < span class = "o" > .< / span > < span class = "n" > get_queryset< / span > < span class = "p" > ()< / span >
< span class = "c1" > # If the queryset isn' t already ordered we need to add an< / span >
< span class = "c1" > # artificial ordering here to make sure that all formsets< / span >
< span class = "c1" > # constructed from this queryset have the same form order.< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > qs< / span > < span class = "o" > .< / span > < span class = "n" > ordered< / span > < span class = "p" > :< / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "n" > qs< / span > < span class = "o" > .< / span > < span class = "n" > order_by< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "c1" > # Removed queryset limiting here. As per discussion re: #13023< / span >
< span class = "c1" > # on django-dev, max_num should not prevent existing< / span >
< span class = "c1" > # related objects/inlines from being displayed.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _queryset< / span > < span class = "o" > =< / span > < span class = "n" > qs< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _queryset< / span >
< span class = "k" > def< / span > < span class = "nf" > save_new< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " Save and return a new model instance for the given form." " " < / span >
< span class = "k" > return< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > save< / span > < span class = "p" > (< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "n" > commit< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > save_existing< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " Save and return an existing model instance for the given form." " " < / span >
< span class = "k" > return< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > save< / span > < span class = "p" > (< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "n" > commit< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > delete_existing< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " Deletes an existing model instance." " " < / span >
< span class = "k" > if< / span > < span class = "n" > commit< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > delete< / span > < span class = "p" > ()< / span >
< span class = "k" > def< / span > < span class = "nf" > save< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Save model instances for every form, adding and changing instances< / span >
< span class = "sd" > as necessary, and return the list of instances.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > commit< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > saved_forms< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > def< / span > < span class = "nf" > save_m2m< / span > < span class = "p" > ():< / span >
< span class = "k" > for< / span > < span class = "n" > form< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > saved_forms< / span > < span class = "p" > :< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > save_m2m< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > save_m2m< / span > < span class = "o" > =< / span > < span class = "n" > save_m2m< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > save_existing_objects< / span > < span class = "p" > (< / span > < span class = "n" > commit< / span > < span class = "p" > )< / span > < span class = "o" > +< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > save_new_objects< / span > < span class = "p" > (< / span > < span class = "n" > commit< / span > < span class = "p" > )< / span >
< span class = "n" > save< / span > < span class = "o" > .< / span > < span class = "n" > alters_data< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span >
< span class = "k" > def< / span > < span class = "nf" > clean< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > validate_unique< / span > < span class = "p" > ()< / span >
< span class = "k" > def< / span > < span class = "nf" > validate_unique< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "c1" > # Collect unique_checks and date_checks to run from all the forms.< / span >
< span class = "n" > all_unique_checks< / span > < span class = "o" > =< / span > < span class = "nb" > set< / span > < span class = "p" > ()< / span >
< span class = "n" > all_date_checks< / span > < span class = "o" > =< / span > < span class = "nb" > set< / span > < span class = "p" > ()< / span >
< span class = "n" > forms_to_delete< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > deleted_forms< / span >
< span class = "n" > valid_forms< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > form< / span > < span class = "k" > for< / span > < span class = "n" > form< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > forms< / span > < span class = "k" > if< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > is_valid< / span > < span class = "p" > ()< / span > < span class = "ow" > and< / span > < span class = "n" > form< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > forms_to_delete< / span > < span class = "p" > ]< / span >
< span class = "k" > for< / span > < span class = "n" > form< / span > < span class = "ow" > in< / span > < span class = "n" > valid_forms< / span > < span class = "p" > :< / span >
< span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _get_validation_exclusions< / span > < span class = "p" > ()< / span >
< span class = "n" > unique_checks< / span > < span class = "p" > ,< / span > < span class = "n" > date_checks< / span > < span class = "o" > =< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _get_unique_checks< / span > < span class = "p" > (< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "n" > exclude< / span > < span class = "p" > )< / span >
< span class = "n" > all_unique_checks< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span > < span class = "n" > unique_checks< / span > < span class = "p" > )< / span >
< span class = "n" > all_date_checks< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span > < span class = "n" > date_checks< / span > < span class = "p" > )< / span >
< span class = "n" > errors< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "c1" > # Do each of the unique checks (unique and unique_together)< / span >
< span class = "k" > for< / span > < span class = "n" > uclass< / span > < span class = "p" > ,< / span > < span class = "n" > unique_check< / span > < span class = "ow" > in< / span > < span class = "n" > all_unique_checks< / span > < span class = "p" > :< / span >
< span class = "n" > seen_data< / span > < span class = "o" > =< / span > < span class = "nb" > set< / span > < span class = "p" > ()< / span >
< span class = "k" > for< / span > < span class = "n" > form< / span > < span class = "ow" > in< / span > < span class = "n" > valid_forms< / span > < span class = "p" > :< / span >
< span class = "c1" > # Get the data for the set of fields that must be unique among the forms.< / span >
< span class = "n" > row_data< / span > < span class = "o" > =< / span > < span class = "p" > (< / span >
< span class = "n" > field< / span > < span class = "k" > if< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > unique_fields< / span > < span class = "k" > else< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > field< / span > < span class = "p" > ]< / span >
< span class = "k" > for< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "n" > unique_check< / span > < span class = "k" > if< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span >
< span class = "p" > )< / span >
< span class = "c1" > # Reduce Model instances to their primary key values< / span >
< span class = "n" > row_data< / span > < span class = "o" > =< / span > < span class = "nb" > tuple< / span > < span class = "p" > (< / span >
< span class = "n" > d< / span > < span class = "o" > .< / span > < span class = "n" > _get_pk_val< / span > < span class = "p" > ()< / span > < span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > d< / span > < span class = "p" > ,< / span > < span class = "s1" > ' _get_pk_val' < / span > < span class = "p" > )< / span >
< span class = "c1" > # Prevent " unhashable type: list" errors later on.< / span >
< span class = "k" > else< / span > < span class = "nb" > tuple< / span > < span class = "p" > (< / span > < span class = "n" > d< / span > < span class = "p" > )< / span > < span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > d< / span > < span class = "p" > ,< / span > < span class = "nb" > list< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "n" > d< / span > < span class = "k" > for< / span > < span class = "n" > d< / span > < span class = "ow" > in< / span > < span class = "n" > row_data< / span >
< span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > row_data< / span > < span class = "ow" > and< / span > < span class = "kc" > None< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > row_data< / span > < span class = "p" > :< / span >
< span class = "c1" > # if we' ve already seen it then we have a uniqueness failure< / span >
< span class = "k" > if< / span > < span class = "n" > row_data< / span > < span class = "ow" > in< / span > < span class = "n" > seen_data< / span > < span class = "p" > :< / span >
< span class = "c1" > # poke error messages into the right places and mark< / span >
< span class = "c1" > # the form as invalid< / span >
< span class = "n" > errors< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_unique_error_message< / span > < span class = "p" > (< / span > < span class = "n" > unique_check< / span > < span class = "p" > ))< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _errors< / span > < span class = "p" > [< / span > < span class = "n" > NON_FIELD_ERRORS< / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_class< / span > < span class = "p" > ([< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_form_error< / span > < span class = "p" > ()])< / span >
< span class = "c1" > # remove the data from the cleaned_data dict since it was invalid< / span >
< span class = "k" > for< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "n" > unique_check< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > :< / span >
< span class = "k" > del< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > field< / span > < span class = "p" > ]< / span >
< span class = "c1" > # mark the data as seen< / span >
< span class = "n" > seen_data< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span > < span class = "n" > row_data< / span > < span class = "p" > )< / span >
< span class = "c1" > # iterate over each of the date checks now< / span >
< span class = "k" > for< / span > < span class = "n" > date_check< / span > < span class = "ow" > in< / span > < span class = "n" > all_date_checks< / span > < span class = "p" > :< / span >
< span class = "n" > seen_data< / span > < span class = "o" > =< / span > < span class = "nb" > set< / span > < span class = "p" > ()< / span >
< span class = "n" > uclass< / span > < span class = "p" > ,< / span > < span class = "n" > lookup< / span > < span class = "p" > ,< / span > < span class = "n" > field< / span > < span class = "p" > ,< / span > < span class = "n" > unique_for< / span > < span class = "o" > =< / span > < span class = "n" > date_check< / span >
< span class = "k" > for< / span > < span class = "n" > form< / span > < span class = "ow" > in< / span > < span class = "n" > valid_forms< / span > < span class = "p" > :< / span >
< span class = "c1" > # see if we have data for both fields< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "ow" > and< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > field< / span > < span class = "p" > ]< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "ow" > and< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > unique_for< / span > < span class = "p" > ]< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "c1" > # if it' s a date lookup we need to get the data for all the fields< / span >
< span class = "k" > if< / span > < span class = "n" > lookup< / span > < span class = "o" > ==< / span > < span class = "s1" > ' date' < / span > < span class = "p" > :< / span >
< span class = "n" > date< / span > < span class = "o" > =< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > unique_for< / span > < span class = "p" > ]< / span >
< span class = "n" > date_data< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > date< / span > < span class = "o" > .< / span > < span class = "n" > year< / span > < span class = "p" > ,< / span > < span class = "n" > date< / span > < span class = "o" > .< / span > < span class = "n" > month< / span > < span class = "p" > ,< / span > < span class = "n" > date< / span > < span class = "o" > .< / span > < span class = "n" > day< / span > < span class = "p" > )< / span >
< span class = "c1" > # otherwise it' s just the attribute on the date/datetime< / span >
< span class = "c1" > # object< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > date_data< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > unique_for< / span > < span class = "p" > ],< / span > < span class = "n" > lookup< / span > < span class = "p" > ),)< / span >
< span class = "n" > data< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > field< / span > < span class = "p" > ],)< / span > < span class = "o" > +< / span > < span class = "n" > date_data< / span >
< span class = "c1" > # if we' ve already seen it then we have a uniqueness failure< / span >
< span class = "k" > if< / span > < span class = "n" > data< / span > < span class = "ow" > in< / span > < span class = "n" > seen_data< / span > < span class = "p" > :< / span >
< span class = "c1" > # poke error messages into the right places and mark< / span >
< span class = "c1" > # the form as invalid< / span >
< span class = "n" > errors< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_date_error_message< / span > < span class = "p" > (< / span > < span class = "n" > date_check< / span > < span class = "p" > ))< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _errors< / span > < span class = "p" > [< / span > < span class = "n" > NON_FIELD_ERRORS< / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_class< / span > < span class = "p" > ([< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_form_error< / span > < span class = "p" > ()])< / span >
< span class = "c1" > # remove the data from the cleaned_data dict since it was invalid< / span >
< span class = "k" > del< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > cleaned_data< / span > < span class = "p" > [< / span > < span class = "n" > field< / span > < span class = "p" > ]< / span >
< span class = "c1" > # mark the data as seen< / span >
< span class = "n" > seen_data< / span > < span class = "o" > .< / span > < span class = "n" > add< / span > < span class = "p" > (< / span > < span class = "n" > data< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > errors< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span > < span class = "n" > errors< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > get_unique_error_message< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > unique_check< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > unique_check< / span > < span class = "p" > )< / span > < span class = "o" > ==< / span > < span class = "mi" > 1< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "n" > gettext< / span > < span class = "p" > (< / span > < span class = "s2" > " Please correct the duplicate data for < / span > < span class = "si" > %(field)s< / span > < span class = "s2" > ." < / span > < span class = "p" > )< / span > < span class = "o" > %< / span > < span class = "p" > {< / span >
< span class = "s2" > " field" < / span > < span class = "p" > :< / span > < span class = "n" > unique_check< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ],< / span >
< span class = "p" > }< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "n" > gettext< / span > < span class = "p" > (< / span > < span class = "s2" > " Please correct the duplicate data for < / span > < span class = "si" > %(field)s< / span > < span class = "s2" > , which must be unique." < / span > < span class = "p" > )< / span > < span class = "o" > %< / span > < span class = "p" > {< / span >
< span class = "s2" > " field" < / span > < span class = "p" > :< / span > < span class = "n" > get_text_list< / span > < span class = "p" > (< / span > < span class = "n" > unique_check< / span > < span class = "p" > ,< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s2" > " and" < / span > < span class = "p" > )),< / span >
< span class = "p" > }< / span >
< span class = "k" > def< / span > < span class = "nf" > get_date_error_message< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > date_check< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "n" > gettext< / span > < span class = "p" > (< / span >
< span class = "s2" > " Please correct the duplicate data for < / span > < span class = "si" > %(field_name)s< / span > < span class = "s2" > " < / span >
< span class = "s2" > " which must be unique for the < / span > < span class = "si" > %(lookup)s< / span > < span class = "s2" > in < / span > < span class = "si" > %(date_field)s< / span > < span class = "s2" > ." < / span >
< span class = "p" > )< / span > < span class = "o" > %< / span > < span class = "p" > {< / span >
< span class = "s1" > ' field_name' < / span > < span class = "p" > :< / span > < span class = "n" > date_check< / span > < span class = "p" > [< / span > < span class = "mi" > 2< / span > < span class = "p" > ],< / span >
< span class = "s1" > ' date_field' < / span > < span class = "p" > :< / span > < span class = "n" > date_check< / span > < span class = "p" > [< / span > < span class = "mi" > 3< / span > < span class = "p" > ],< / span >
< span class = "s1" > ' lookup' < / span > < span class = "p" > :< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > date_check< / span > < span class = "p" > [< / span > < span class = "mi" > 1< / span > < span class = "p" > ]),< / span >
< span class = "p" > }< / span >
< span class = "k" > def< / span > < span class = "nf" > get_form_error< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "n" > gettext< / span > < span class = "p" > (< / span > < span class = "s2" > " Please correct the duplicate values below." < / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > save_existing_objects< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > changed_objects< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > deleted_objects< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > initial_forms< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "p" > []< / span >
< span class = "n" > saved_instances< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "n" > forms_to_delete< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > deleted_forms< / span >
< span class = "k" > for< / span > < span class = "n" > form< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > initial_forms< / span > < span class = "p" > :< / span >
< span class = "n" > obj< / span > < span class = "o" > =< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span >
< span class = "c1" > # If the pk is None, it means either:< / span >
< span class = "c1" > # 1. The object is an unexpected empty model, created by invalid< / span >
< span class = "c1" > # POST data such as an object outside the formset' s queryset.< / span >
< span class = "c1" > # 2. The object was already deleted from the database.< / span >
< span class = "k" > if< / span > < span class = "n" > obj< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "k" > continue< / span >
< span class = "k" > if< / span > < span class = "n" > form< / span > < span class = "ow" > in< / span > < span class = "n" > forms_to_delete< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > deleted_objects< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > delete_existing< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "n" > commit< / span > < span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > has_changed< / span > < span class = "p" > ():< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > changed_objects< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > ((< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > changed_data< / span > < span class = "p" > ))< / span >
< span class = "n" > saved_instances< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > save_existing< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "n" > commit< / span > < span class = "p" > ))< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > commit< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > saved_forms< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > saved_instances< / span >
< span class = "k" > def< / span > < span class = "nf" > save_new_objects< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > new_objects< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > for< / span > < span class = "n" > form< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > extra_forms< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > has_changed< / span > < span class = "p" > ():< / span >
< span class = "k" > continue< / span >
< span class = "c1" > # If someone has marked an add form for deletion, don' t save the< / span >
< span class = "c1" > # object.< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > can_delete< / span > < span class = "ow" > and< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _should_delete_form< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ):< / span >
< span class = "k" > continue< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > new_objects< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > save_new< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "n" > commit< / span > < span class = "p" > ))< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > commit< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > saved_forms< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > new_objects< / span >
< span class = "k" > def< / span > < span class = "nf" > add_fields< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > index< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " Add a hidden field for the object' s primary key." " " < / span >
< span class = "kn" > from< / span > < span class = "nn" > django.db.models< / span > < span class = "k" > import< / span > < span class = "n" > AutoField< / span > < span class = "p" > ,< / span > < span class = "n" > OneToOneField< / span > < span class = "p" > ,< / span > < span class = "n" > ForeignKey< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _pk_field< / span > < span class = "o" > =< / span > < span class = "n" > pk< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span >
< span class = "c1" > # If a pk isn' t editable, then it won' t be on the form, so we need to< / span >
< span class = "c1" > # add it here so we can tell which object is which when we get the< / span >
< span class = "c1" > # data back. Generally, pk.editable should be false, but for some< / span >
< span class = "c1" > # reason, auto_created pk fields and AutoField' s editable attribute is< / span >
< span class = "c1" > # True, so check for that as well.< / span >
< span class = "k" > def< / span > < span class = "nf" > pk_is_not_editable< / span > < span class = "p" > (< / span > < span class = "n" > pk< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "p" > (< / span >
< span class = "p" > (< / span > < span class = "ow" > not< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > editable< / span > < span class = "p" > )< / span > < span class = "ow" > or< / span > < span class = "p" > (< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > auto_created< / span > < span class = "ow" > or< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > pk< / span > < span class = "p" > ,< / span > < span class = "n" > AutoField< / span > < span class = "p" > ))< / span > < span class = "ow" > or< / span > < span class = "p" > (< / span >
< span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "ow" > and< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > parent_link< / span > < span class = "ow" > and< / span >
< span class = "n" > pk_is_not_editable< / span > < span class = "p" > (< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > pk_is_not_editable< / span > < span class = "p" > (< / span > < span class = "n" > pk< / span > < span class = "p" > )< / span > < span class = "ow" > or< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > is_bound< / span > < span class = "p" > :< / span >
< span class = "c1" > # If we' re adding the related instance, ignore its primary key< / span >
< span class = "c1" > # as it could be an auto-generated default which isn' t actually< / span >
< span class = "c1" > # in the database.< / span >
< span class = "n" > pk_value< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "k" > if< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _state< / span > < span class = "o" > .< / span > < span class = "n" > adding< / span > < span class = "k" > else< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "n" > index< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > pk_value< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_queryset< / span > < span class = "p" > ()[< / span > < span class = "n" > index< / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > pk_value< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > except< / span > < span class = "ne" > IndexError< / span > < span class = "p" > :< / span >
< span class = "n" > pk_value< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > pk< / span > < span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > ForeignKey< / span > < span class = "p" > ,< / span > < span class = "n" > OneToOneField< / span > < span class = "p" > )):< / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _default_manager< / span > < span class = "o" > .< / span > < span class = "n" > get_queryset< / span > < span class = "p" > ()< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _default_manager< / span > < span class = "o" > .< / span > < span class = "n" > get_queryset< / span > < span class = "p" > ()< / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "n" > qs< / span > < span class = "o" > .< / span > < span class = "n" > using< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _state< / span > < span class = "o" > .< / span > < span class = "n" > db< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > widgets< / span > < span class = "p" > :< / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > widgets< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _pk_field< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > HiddenInput< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > HiddenInput< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > [< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _pk_field< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > ModelChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > qs< / span > < span class = "p" > ,< / span > < span class = "n" > initial< / span > < span class = "o" > =< / span > < span class = "n" > pk_value< / span > < span class = "p" > ,< / span > < span class = "n" > required< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > widget< / span > < span class = "p" > )< / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > add_fields< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > index< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > modelformset_factory< / span > < span class = "p" > (< / span > < span class = "n" > model< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "o" > =< / span > < span class = "n" > ModelForm< / span > < span class = "p" > ,< / span > < span class = "n" > formfield_callback< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > formset< / span > < span class = "o" > =< / span > < span class = "n" > BaseModelFormSet< / span > < span class = "p" > ,< / span > < span class = "n" > extra< / span > < span class = "o" > =< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "n" > can_delete< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span >
< span class = "n" > can_order< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "n" > max_num< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > widgets< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > validate_max< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "n" > localized_fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > labels< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > help_texts< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > error_messages< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > min_num< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > validate_min< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "n" > field_classes< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " Return a FormSet class for the given Django model class." " " < / span >
< span class = "n" > meta< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "s1" > ' Meta' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > meta< / span > < span class = "p" > ,< / span > < span class = "s1" > ' fields' < / span > < span class = "p" > ,< / span > < span class = "n" > fields< / span > < span class = "p" > )< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "ow" > and< / span >
< span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > meta< / span > < span class = "p" > ,< / span > < span class = "s1" > ' exclude' < / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "p" > )< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "n" > ImproperlyConfigured< / span > < span class = "p" > (< / span >
< span class = "s2" > " Calling modelformset_factory without defining ' fields' or " < / span >
< span class = "s2" > " ' exclude' explicitly is prohibited." < / span >
< span class = "p" > )< / span >
< span class = "n" > form< / span > < span class = "o" > =< / span > < span class = "n" > modelform_factory< / span > < span class = "p" > (< / span > < span class = "n" > model< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "o" > =< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "n" > fields< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "n" > exclude< / span > < span class = "p" > ,< / span >
< span class = "n" > formfield_callback< / span > < span class = "o" > =< / span > < span class = "n" > formfield_callback< / span > < span class = "p" > ,< / span >
< span class = "n" > widgets< / span > < span class = "o" > =< / span > < span class = "n" > widgets< / span > < span class = "p" > ,< / span > < span class = "n" > localized_fields< / span > < span class = "o" > =< / span > < span class = "n" > localized_fields< / span > < span class = "p" > ,< / span >
< span class = "n" > labels< / span > < span class = "o" > =< / span > < span class = "n" > labels< / span > < span class = "p" > ,< / span > < span class = "n" > help_texts< / span > < span class = "o" > =< / span > < span class = "n" > help_texts< / span > < span class = "p" > ,< / span >
< span class = "n" > error_messages< / span > < span class = "o" > =< / span > < span class = "n" > error_messages< / span > < span class = "p" > ,< / span > < span class = "n" > field_classes< / span > < span class = "o" > =< / span > < span class = "n" > field_classes< / span > < span class = "p" > )< / span >
< span class = "n" > FormSet< / span > < span class = "o" > =< / span > < span class = "n" > formset_factory< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > formset< / span > < span class = "p" > ,< / span > < span class = "n" > extra< / span > < span class = "o" > =< / span > < span class = "n" > extra< / span > < span class = "p" > ,< / span > < span class = "n" > min_num< / span > < span class = "o" > =< / span > < span class = "n" > min_num< / span > < span class = "p" > ,< / span > < span class = "n" > max_num< / span > < span class = "o" > =< / span > < span class = "n" > max_num< / span > < span class = "p" > ,< / span >
< span class = "n" > can_order< / span > < span class = "o" > =< / span > < span class = "n" > can_order< / span > < span class = "p" > ,< / span > < span class = "n" > can_delete< / span > < span class = "o" > =< / span > < span class = "n" > can_delete< / span > < span class = "p" > ,< / span >
< span class = "n" > validate_min< / span > < span class = "o" > =< / span > < span class = "n" > validate_min< / span > < span class = "p" > ,< / span > < span class = "n" > validate_max< / span > < span class = "o" > =< / span > < span class = "n" > validate_max< / span > < span class = "p" > )< / span >
< span class = "n" > FormSet< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > =< / span > < span class = "n" > model< / span >
< span class = "k" > return< / span > < span class = "n" > FormSet< / span >
< span class = "c1" > # InlineFormSets #############################################################< / span >
< span class = "k" > class< / span > < span class = "nc" > BaseInlineFormSet< / span > < span class = "p" > (< / span > < span class = "n" > BaseModelFormSet< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " A formset for child objects related to a parent." " " < / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > data< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > files< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > instance< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > save_as_new< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "n" > prefix< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "n" > instance< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "p" > ()< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > =< / span > < span class = "n" > instance< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > save_as_new< / span > < span class = "o" > =< / span > < span class = "n" > save_as_new< / span >
< span class = "k" > if< / span > < span class = "n" > queryset< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _default_manager< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > filter< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > :< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "p" > })< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > none< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > unique_fields< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > }< / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "n" > data< / span > < span class = "p" > ,< / span > < span class = "n" > files< / span > < span class = "p" > ,< / span > < span class = "n" > prefix< / span > < span class = "o" > =< / span > < span class = "n" > prefix< / span > < span class = "p" > ,< / span > < span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "n" > qs< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "c1" > # Add the generated field to form._meta.fields if it' s defined to make< / span >
< span class = "c1" > # sure validation isn' t skipped on that field.< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "ow" > and< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > ,< / span > < span class = "nb" > tuple< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "nb" > list< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > initial_form_count< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > save_as_new< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "mi" > 0< / span >
< span class = "k" > return< / span > < span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > initial_form_count< / span > < span class = "p" > ()< / span >
< span class = "k" > def< / span > < span class = "nf" > _construct_form< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > i< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "n" > form< / span > < span class = "o" > =< / span > < span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > _construct_form< / span > < span class = "p" > (< / span > < span class = "n" > i< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > save_as_new< / span > < span class = "p" > :< / span >
< span class = "n" > mutable< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > data< / span > < span class = "p" > ,< / span > < span class = "s1" > ' _mutable' < / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "c1" > # Allow modifying an immutable QueryDict.< / span >
< span class = "k" > if< / span > < span class = "n" > mutable< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > data< / span > < span class = "o" > .< / span > < span class = "n" > _mutable< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span >
< span class = "c1" > # Remove the primary key from the form' s data, we are only< / span >
< span class = "c1" > # creating new instances< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > data< / span > < span class = "p" > [< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > add_prefix< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _pk_field< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )]< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "c1" > # Remove the foreign key from the form' s data< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > data< / span > < span class = "p" > [< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > add_prefix< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > )]< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > if< / span > < span class = "n" > mutable< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > data< / span > < span class = "o" > .< / span > < span class = "n" > _mutable< / span > < span class = "o" > =< / span > < span class = "n" > mutable< / span >
< span class = "c1" > # Set the fk value here so that the form can do its validation.< / span >
< span class = "n" > fk_value< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > field_name< / span > < span class = "o" > !=< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > :< / span >
< span class = "n" > fk_value< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > field_name< / span > < span class = "p" > )< / span >
< span class = "n" > fk_value< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > fk_value< / span > < span class = "p" > ,< / span > < span class = "s1" > ' pk' < / span > < span class = "p" > ,< / span > < span class = "n" > fk_value< / span > < span class = "p" > )< / span >
< span class = "nb" > setattr< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > get_attname< / span > < span class = "p" > (),< / span > < span class = "n" > fk_value< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > form< / span >
< span class = "nd" > @classmethod< / span >
< span class = "k" > def< / span > < span class = "nf" > get_default_prefix< / span > < span class = "p" > (< / span > < span class = "bp" > cls< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > get_accessor_name< / span > < span class = "p" > (< / span > < span class = "n" > model< / span > < span class = "o" > =< / span > < span class = "bp" > cls< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > replace< / span > < span class = "p" > (< / span > < span class = "s1" > ' +' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ' < / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > save_new< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ):< / span >
< span class = "c1" > # Ensure the latest copy of the related instance is present on each< / span >
< span class = "c1" > # form (it may have been saved after the formset was originally< / span >
< span class = "c1" > # instantiated).< / span >
< span class = "nb" > setattr< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > save_new< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > commit< / span > < span class = "o" > =< / span > < span class = "n" > commit< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > add_fields< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > index< / span > < span class = "p" > ):< / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > add_fields< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span > < span class = "n" > index< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _pk_field< / span > < span class = "o" > ==< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "p" > :< / span >
< span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _pk_field< / span > < span class = "o" > .< / span > < span class = "n" > name< / span >
< span class = "n" > kwargs< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "s1" > ' pk_field' < / span > < span class = "p" > :< / span > < span class = "kc" > True< / span > < span class = "p" > }< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "c1" > # The foreign key field might not be on the form, so we poke at the< / span >
< span class = "c1" > # Model field to get the label, since we need that for error messages.< / span >
< span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span >
< span class = "n" > kwargs< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s1" > ' label' < / span > < span class = "p" > :< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "n" > name< / span > < span class = "p" > ),< / span > < span class = "s1" > ' label' < / span > < span class = "p" > ,< / span > < span class = "n" > capfirst< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > verbose_name< / span > < span class = "p" > ))< / span >
< span class = "p" > }< / span >
< span class = "c1" > # The InlineForeignKeyField assumes that the foreign key relation is< / span >
< span class = "c1" > # based on the parent model' s pk. If this isn' t the case, set to_field< / span >
< span class = "c1" > # to correctly resolve the initial form value.< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > field_name< / span > < span class = "o" > !=< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' to_field' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > field_name< / span >
< span class = "c1" > # If we' re adding a new object, ignore a parent' s auto-generated key< / span >
< span class = "c1" > # as it will be regenerated on the save request.< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _state< / span > < span class = "o" > .< / span > < span class = "n" > adding< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s1" > ' to_field' < / span > < span class = "p" > )< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > to_field< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > get_field< / span > < span class = "p" > (< / span > < span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s1" > ' to_field' < / span > < span class = "p" > ])< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > to_field< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span >
< span class = "k" > if< / span > < span class = "n" > to_field< / span > < span class = "o" > .< / span > < span class = "n" > has_default< / span > < span class = "p" > ():< / span >
< span class = "nb" > setattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "n" > to_field< / span > < span class = "o" > .< / span > < span class = "n" > attname< / span > < span class = "p" > ,< / span > < span class = "kc" > None< / span > < span class = "p" > )< / span >
< span class = "n" > form< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "p" > [< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > InlineForeignKeyField< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > instance< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > get_unique_error_message< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > unique_check< / span > < span class = "p" > ):< / span >
< span class = "n" > unique_check< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > field< / span > < span class = "k" > for< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "n" > unique_check< / span > < span class = "k" > if< / span > < span class = "n" > field< / span > < span class = "o" > !=< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "p" > ]< / span >
< span class = "k" > return< / span > < span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > get_unique_error_message< / span > < span class = "p" > (< / span > < span class = "n" > unique_check< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > _get_foreign_key< / span > < span class = "p" > (< / span > < span class = "n" > parent_model< / span > < span class = "p" > ,< / span > < span class = "n" > model< / span > < span class = "p" > ,< / span > < span class = "n" > fk_name< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > can_fail< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Find and return the ForeignKey from model to parent if there is one< / span >
< span class = "sd" > (return None if can_fail is True and no such field exists). If fk_name is< / span >
< span class = "sd" > provided, assume it is the name of the ForeignKey field. Unless can_fail is< / span >
< span class = "sd" > True, raise an exception if there isn' t a ForeignKey from model to< / span >
< span class = "sd" > parent_model.< / span >
< span class = "sd" > " " " < / span >
< span class = "c1" > # avoid circular import< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.db.models< / span > < span class = "k" > import< / span > < span class = "n" > ForeignKey< / span >
< span class = "n" > opts< / span > < span class = "o" > =< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span >
< span class = "k" > if< / span > < span class = "n" > fk_name< / span > < span class = "p" > :< / span >
< span class = "n" > fks_to_parent< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "n" > f< / span > < span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "k" > if< / span > < span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > name< / span > < span class = "o" > ==< / span > < span class = "n" > fk_name< / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > fks_to_parent< / span > < span class = "p" > )< / span > < span class = "o" > ==< / span > < span class = "mi" > 1< / span > < span class = "p" > :< / span >
< span class = "n" > fk< / span > < span class = "o" > =< / span > < span class = "n" > fks_to_parent< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > fk< / span > < span class = "p" > ,< / span > < span class = "n" > ForeignKey< / span > < span class = "p" > )< / span > < span class = "ow" > or< / span > \
< span class = "p" > (< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > !=< / span > < span class = "n" > parent_model< / span > < span class = "ow" > and< / span >
< span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > parent_model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > get_parent_list< / span > < span class = "p" > ()):< / span >
< span class = "k" > raise< / span > < span class = "ne" > ValueError< / span > < span class = "p" > (< / span >
< span class = "s2" > " fk_name ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' is not a ForeignKey to ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' ." < / span > < span class = "o" > %< / span > < span class = "p" > (< / span > < span class = "n" > fk_name< / span > < span class = "p" > ,< / span > < span class = "n" > parent_model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > label< / span > < span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "ow" > not< / span > < span class = "n" > fks_to_parent< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "ne" > ValueError< / span > < span class = "p" > (< / span >
< span class = "s2" > " ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' has no field named ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' ." < / span > < span class = "o" > %< / span > < span class = "p" > (< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span > < span class = "n" > fk_name< / span > < span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "c1" > # Try to discover what the ForeignKey from model to parent_model is< / span >
< span class = "n" > fks_to_parent< / span > < span class = "o" > =< / span > < span class = "p" > [< / span >
< span class = "n" > f< / span > < span class = "k" > for< / span > < span class = "n" > f< / span > < span class = "ow" > in< / span > < span class = "n" > opts< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span >
< span class = "k" > if< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > f< / span > < span class = "p" > ,< / span > < span class = "n" > ForeignKey< / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "p" > (< / span >
< span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > ==< / span > < span class = "n" > parent_model< / span > < span class = "ow" > or< / span >
< span class = "n" > f< / span > < span class = "o" > .< / span > < span class = "n" > remote_field< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "ow" > in< / span > < span class = "n" > parent_model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > get_parent_list< / span > < span class = "p" > ()< / span >
< span class = "p" > )< / span >
< span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > fks_to_parent< / span > < span class = "p" > )< / span > < span class = "o" > ==< / span > < span class = "mi" > 1< / span > < span class = "p" > :< / span >
< span class = "n" > fk< / span > < span class = "o" > =< / span > < span class = "n" > fks_to_parent< / span > < span class = "p" > [< / span > < span class = "mi" > 0< / span > < span class = "p" > ]< / span >
< span class = "k" > elif< / span > < span class = "ow" > not< / span > < span class = "n" > fks_to_parent< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "n" > can_fail< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span >
< span class = "k" > raise< / span > < span class = "ne" > ValueError< / span > < span class = "p" > (< / span >
< span class = "s2" > " ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' has no ForeignKey to ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' ." < / span > < span class = "o" > %< / span > < span class = "p" > (< / span >
< span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span >
< span class = "n" > parent_model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "ne" > ValueError< / span > < span class = "p" > (< / span >
< span class = "s2" > " ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' has more than one ForeignKey to ' < / span > < span class = "si" > %s< / span > < span class = "s2" > ' ." < / span > < span class = "o" > %< / span > < span class = "p" > (< / span >
< span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span >
< span class = "n" > parent_model< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > fk< / span >
< span class = "k" > def< / span > < span class = "nf" > inlineformset_factory< / span > < span class = "p" > (< / span > < span class = "n" > parent_model< / span > < span class = "p" > ,< / span > < span class = "n" > model< / span > < span class = "p" > ,< / span > < span class = "n" > form< / span > < span class = "o" > =< / span > < span class = "n" > ModelForm< / span > < span class = "p" > ,< / span >
< span class = "n" > formset< / span > < span class = "o" > =< / span > < span class = "n" > BaseInlineFormSet< / span > < span class = "p" > ,< / span > < span class = "n" > fk_name< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > exclude< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > extra< / span > < span class = "o" > =< / span > < span class = "mi" > 3< / span > < span class = "p" > ,< / span > < span class = "n" > can_order< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span >
< span class = "n" > can_delete< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ,< / span > < span class = "n" > max_num< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > formfield_callback< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > widgets< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > validate_max< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "n" > localized_fields< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > labels< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > help_texts< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > error_messages< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > min_num< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > validate_min< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "n" > field_classes< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Return an ``InlineFormSet`` for the given kwargs.< / span >
< span class = "sd" > ``fk_name`` must be provided if ``model`` has more than one ``ForeignKey``< / span >
< span class = "sd" > to ``parent_model``.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > fk< / span > < span class = "o" > =< / span > < span class = "n" > _get_foreign_key< / span > < span class = "p" > (< / span > < span class = "n" > parent_model< / span > < span class = "p" > ,< / span > < span class = "n" > model< / span > < span class = "p" > ,< / span > < span class = "n" > fk_name< / span > < span class = "o" > =< / span > < span class = "n" > fk_name< / span > < span class = "p" > )< / span >
< span class = "c1" > # enforce a max_num=1 when the foreign key to the parent model is unique.< / span >
< span class = "k" > if< / span > < span class = "n" > fk< / span > < span class = "o" > .< / span > < span class = "n" > unique< / span > < span class = "p" > :< / span >
< span class = "n" > max_num< / span > < span class = "o" > =< / span > < span class = "mi" > 1< / span >
< span class = "n" > kwargs< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s1" > ' form' < / span > < span class = "p" > :< / span > < span class = "n" > form< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' formfield_callback' < / span > < span class = "p" > :< / span > < span class = "n" > formfield_callback< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' formset' < / span > < span class = "p" > :< / span > < span class = "n" > formset< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' extra' < / span > < span class = "p" > :< / span > < span class = "n" > extra< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' can_delete' < / span > < span class = "p" > :< / span > < span class = "n" > can_delete< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' can_order' < / span > < span class = "p" > :< / span > < span class = "n" > can_order< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' fields' < / span > < span class = "p" > :< / span > < span class = "n" > fields< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' exclude' < / span > < span class = "p" > :< / span > < span class = "n" > exclude< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' min_num' < / span > < span class = "p" > :< / span > < span class = "n" > min_num< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' max_num' < / span > < span class = "p" > :< / span > < span class = "n" > max_num< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' widgets' < / span > < span class = "p" > :< / span > < span class = "n" > widgets< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' validate_min' < / span > < span class = "p" > :< / span > < span class = "n" > validate_min< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' validate_max' < / span > < span class = "p" > :< / span > < span class = "n" > validate_max< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' localized_fields' < / span > < span class = "p" > :< / span > < span class = "n" > localized_fields< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' labels' < / span > < span class = "p" > :< / span > < span class = "n" > labels< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' help_texts' < / span > < span class = "p" > :< / span > < span class = "n" > help_texts< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' error_messages' < / span > < span class = "p" > :< / span > < span class = "n" > error_messages< / span > < span class = "p" > ,< / span >
< span class = "s1" > ' field_classes' < / span > < span class = "p" > :< / span > < span class = "n" > field_classes< / span > < span class = "p" > ,< / span >
< span class = "p" > }< / span >
< span class = "n" > FormSet< / span > < span class = "o" > =< / span > < span class = "n" > modelformset_factory< / span > < span class = "p" > (< / span > < span class = "n" > model< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "n" > FormSet< / span > < span class = "o" > .< / span > < span class = "n" > fk< / span > < span class = "o" > =< / span > < span class = "n" > fk< / span >
< span class = "k" > return< / span > < span class = "n" > FormSet< / span >
< span class = "c1" > # Fields #####################################################################< / span >
< span class = "k" > class< / span > < span class = "nc" > InlineForeignKeyField< / span > < span class = "p" > (< / span > < span class = "n" > Field< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > A basic integer field that deals with validating the given value to a< / span >
< span class = "sd" > given parent instance in an inline.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > HiddenInput< / span >
< span class = "n" > default_error_messages< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s1" > ' invalid_choice' < / span > < span class = "p" > :< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s1" > ' The inline value did not match the parent instance.' < / span > < span class = "p" > ),< / span >
< span class = "p" > }< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > parent_instance< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "n" > pk_field< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span > < span class = "p" > ,< / span > < span class = "n" > to_field< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > parent_instance< / span > < span class = "o" > =< / span > < span class = "n" > parent_instance< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > pk_field< / span > < span class = "o" > =< / span > < span class = "n" > pk_field< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field< / span > < span class = "o" > =< / span > < span class = "n" > to_field< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > parent_instance< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " initial" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > parent_instance< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " initial" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > parent_instance< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s2" > " required" < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "kc" > False< / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > clean< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "n" > value< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > empty_values< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > pk_field< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "kc" > None< / span >
< span class = "c1" > # if there is no value act as we did before.< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > parent_instance< / span >
< span class = "c1" > # ensure the we compare the values as equal types.< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field< / span > < span class = "p" > :< / span >
< span class = "n" > orig< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > parent_instance< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > orig< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > parent_instance< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span >
< span class = "k" > if< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span > < span class = "o" > !=< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > orig< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s1" > ' invalid_choice' < / span > < span class = "p" > ],< / span > < span class = "n" > code< / span > < span class = "o" > =< / span > < span class = "s1" > ' invalid_choice' < / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > parent_instance< / span >
< span class = "k" > def< / span > < span class = "nf" > has_changed< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > initial< / span > < span class = "p" > ,< / span > < span class = "n" > data< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "k" > class< / span > < span class = "nc" > ModelChoiceIterator< / span > < span class = "p" > :< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > field< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > =< / span > < span class = "n" > field< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span >
< span class = "k" > def< / span > < span class = "nf" > __iter__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > empty_label< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "k" > yield< / span > < span class = "p" > (< / span > < span class = "s2" > " " < / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > empty_label< / span > < span class = "p" > )< / span >
< span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span >
< span class = "c1" > # Can' t use iterator() when queryset uses prefetch_related()< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > _prefetch_related_lookups< / span > < span class = "p" > :< / span >
< span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > iterator< / span > < span class = "p" > ()< / span >
< span class = "k" > for< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "n" > queryset< / span > < span class = "p" > :< / span >
< span class = "k" > yield< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > choice< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > __len__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "c1" > # count() adds a query but uses less memory since the QuerySet results< / span >
< span class = "c1" > # won' t be cached. In most cases, the choices will only be iterated on,< / span >
< span class = "c1" > # and __len__() won' t be called.< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > count< / span > < span class = "p" > ()< / span > < span class = "o" > +< / span > < span class = "p" > (< / span > < span class = "mi" > 1< / span > < span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > empty_label< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "k" > else< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > __bool__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > empty_label< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "ow" > or< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > exists< / span > < span class = "p" > ()< / span >
< span class = "k" > def< / span > < span class = "nf" > choice< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > obj< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > prepare_value< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > ),< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > .< / span > < span class = "n" > label_from_instance< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > ))< / span >
< span class = "k" > class< / span > < span class = "nc" > ModelChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > ChoiceField< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " A ChoiceField whose choices are a model QuerySet." " " < / span >
< span class = "c1" > # This class is a subclass of ChoiceField for purity, but it doesn' t< / span >
< span class = "c1" > # actually use any of ChoiceField' s implementation.< / span >
< span class = "n" > default_error_messages< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s1" > ' invalid_choice' < / span > < span class = "p" > :< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s1" > ' Select a valid choice. That choice is not one of' < / span >
< span class = "s1" > ' the available choices.' < / span > < span class = "p" > ),< / span >
< span class = "p" > }< / span >
< span class = "n" > iterator< / span > < span class = "o" > =< / span > < span class = "n" > ModelChoiceIterator< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > queryset< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "p" > ,< / span > < span class = "n" > empty_label< / span > < span class = "o" > =< / span > < span class = "s2" > " ---------" < / span > < span class = "p" > ,< / span >
< span class = "n" > required< / span > < span class = "o" > =< / span > < span class = "kc" > True< / span > < span class = "p" > ,< / span > < span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > label< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > initial< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "n" > help_text< / span > < span class = "o" > =< / span > < span class = "s1" > ' ' < / span > < span class = "p" > ,< / span > < span class = "n" > to_field_name< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "n" > limit_choices_to< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span >
< span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "n" > required< / span > < span class = "ow" > and< / span > < span class = "p" > (< / span > < span class = "n" > initial< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > empty_label< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > empty_label< / span > < span class = "o" > =< / span > < span class = "n" > empty_label< / span >
< span class = "c1" > # Call Field instead of ChoiceField __init__() because we don' t need< / span >
< span class = "c1" > # ChoiceField.__init__().< / span >
< span class = "n" > Field< / span > < span class = "o" > .< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span >
< span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > required< / span > < span class = "o" > =< / span > < span class = "n" > required< / span > < span class = "p" > ,< / span > < span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > widget< / span > < span class = "p" > ,< / span > < span class = "n" > label< / span > < span class = "o" > =< / span > < span class = "n" > label< / span > < span class = "p" > ,< / span >
< span class = "n" > initial< / span > < span class = "o" > =< / span > < span class = "n" > initial< / span > < span class = "p" > ,< / span > < span class = "n" > help_text< / span > < span class = "o" > =< / span > < span class = "n" > help_text< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span >
< span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "n" > queryset< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > limit_choices_to< / span > < span class = "o" > =< / span > < span class = "n" > limit_choices_to< / span > < span class = "c1" > # limit the queryset later.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field_name< / span > < span class = "o" > =< / span > < span class = "n" > to_field_name< / span >
< span class = "k" > def< / span > < span class = "nf" > get_limit_choices_to< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Return ``limit_choices_to`` for this form field.< / span >
< span class = "sd" > If it is a callable, invoke it and return the result.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "n" > callable< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > limit_choices_to< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > limit_choices_to< / span > < span class = "p" > ()< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > limit_choices_to< / span >
< span class = "k" > def< / span > < span class = "nf" > __deepcopy__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > memo< / span > < span class = "p" > ):< / span >
< span class = "n" > result< / span > < span class = "o" > =< / span > < span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > ChoiceField< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __deepcopy__< / span > < span class = "p" > (< / span > < span class = "n" > memo< / span > < span class = "p" > )< / span >
< span class = "c1" > # Need to force a new ModelChoiceIterator to be created, bug #11183< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > result< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > all< / span > < span class = "p" > ()< / span >
< span class = "k" > return< / span > < span class = "n" > result< / span >
< span class = "k" > def< / span > < span class = "nf" > _get_queryset< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _queryset< / span >
< span class = "k" > def< / span > < span class = "nf" > _set_queryset< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > queryset< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _queryset< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "k" > if< / span > < span class = "n" > queryset< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "k" > else< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > all< / span > < span class = "p" > ()< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > widget< / span > < span class = "o" > .< / span > < span class = "n" > choices< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > choices< / span >
< span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "nb" > property< / span > < span class = "p" > (< / span > < span class = "n" > _get_queryset< / span > < span class = "p" > ,< / span > < span class = "n" > _set_queryset< / span > < span class = "p" > )< / span >
< span class = "c1" > # this method will be used to create object labels by the QuerySetIterator.< / span >
< span class = "c1" > # Override it to customize the label.< / span >
< span class = "k" > def< / span > < span class = "nf" > label_from_instance< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > obj< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Convert objects into strings and generate the labels for the choices< / span >
< span class = "sd" > presented by this object. Subclasses can override this method to< / span >
< span class = "sd" > customize the display of the choices.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > _get_choices< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "c1" > # If self._choices is set, then somebody must have manually set< / span >
< span class = "c1" > # the property self.choices. In this case, just return self._choices.< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s1" > ' _choices' < / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _choices< / span >
< span class = "c1" > # Otherwise, execute the QuerySet in self.queryset to determine the< / span >
< span class = "c1" > # choices dynamically. Return a fresh ModelChoiceIterator that has not been< / span >
< span class = "c1" > # consumed. Note that we' re instantiating a new ModelChoiceIterator *each*< / span >
< span class = "c1" > # time _get_choices() is called (and, thus, each time self.choices is< / span >
< span class = "c1" > # accessed) so that we can ensure the QuerySet has not been consumed. This< / span >
< span class = "c1" > # construct might look complicated but it allows for lazy evaluation of< / span >
< span class = "c1" > # the queryset.< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > iterator< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span >
< span class = "n" > choices< / span > < span class = "o" > =< / span > < span class = "nb" > property< / span > < span class = "p" > (< / span > < span class = "n" > _get_choices< / span > < span class = "p" > ,< / span > < span class = "n" > ChoiceField< / span > < span class = "o" > .< / span > < span class = "n" > _set_choices< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > prepare_value< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > ,< / span > < span class = "s1" > ' _meta' < / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field_name< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "n" > value< / span > < span class = "o" > .< / span > < span class = "n" > serializable_value< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field_name< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "n" > value< / span > < span class = "o" > .< / span > < span class = "n" > pk< / span >
< span class = "k" > return< / span > < span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > prepare_value< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > to_python< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "n" > value< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > empty_values< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "kc" > None< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field_name< / span > < span class = "ow" > or< / span > < span class = "s1" > ' pk' < / span >
< span class = "n" > value< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "n" > key< / span > < span class = "p" > :< / span > < span class = "n" > value< / span > < span class = "p" > })< / span >
< span class = "k" > except< / span > < span class = "p" > (< / span > < span class = "ne" > ValueError< / span > < span class = "p" > ,< / span > < span class = "ne" > TypeError< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > model< / span > < span class = "o" > .< / span > < span class = "n" > DoesNotExist< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s1" > ' invalid_choice' < / span > < span class = "p" > ],< / span > < span class = "n" > code< / span > < span class = "o" > =< / span > < span class = "s1" > ' invalid_choice' < / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > value< / span >
< span class = "k" > def< / span > < span class = "nf" > validate< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "n" > Field< / span > < span class = "o" > .< / span > < span class = "n" > validate< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > has_changed< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > initial< / span > < span class = "p" > ,< / span > < span class = "n" > data< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > disabled< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "n" > initial_value< / span > < span class = "o" > =< / span > < span class = "n" > initial< / span > < span class = "k" > if< / span > < span class = "n" > initial< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "k" > else< / span > < span class = "s1" > ' ' < / span >
< span class = "n" > data_value< / span > < span class = "o" > =< / span > < span class = "n" > data< / span > < span class = "k" > if< / span > < span class = "n" > data< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "k" > else< / span > < span class = "s1" > ' ' < / span >
< span class = "k" > return< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > prepare_value< / span > < span class = "p" > (< / span > < span class = "n" > initial_value< / span > < span class = "p" > ))< / span > < span class = "o" > !=< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > data_value< / span > < span class = "p" > )< / span >
< span class = "k" > class< / span > < span class = "nc" > ModelMultipleChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > ModelChoiceField< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " A MultipleChoiceField whose choices are a model QuerySet." " " < / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > SelectMultiple< / span >
< span class = "n" > hidden_widget< / span > < span class = "o" > =< / span > < span class = "n" > MultipleHiddenInput< / span >
< span class = "n" > default_error_messages< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s1" > ' list' < / span > < span class = "p" > :< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s1" > ' Enter a list of values.' < / span > < span class = "p" > ),< / span >
< span class = "s1" > ' invalid_choice' < / span > < span class = "p" > :< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s1" > ' Select a valid choice. < / span > < span class = "si" > %(value)s< / span > < span class = "s1" > is not one of the' < / span >
< span class = "s1" > ' available choices.' < / span > < span class = "p" > ),< / span >
< span class = "s1" > ' invalid_pk_value' < / span > < span class = "p" > :< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s1" > ' " < / span > < span class = "si" > %(pk)s< / span > < span class = "s1" > " is not a valid value.' < / span > < span class = "p" > )< / span >
< span class = "p" > }< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > queryset< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "fm" > __init__< / span > < span class = "p" > (< / span > < span class = "n" > queryset< / span > < span class = "p" > ,< / span > < span class = "n" > empty_label< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > to_python< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > value< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "p" > []< / span >
< span class = "k" > return< / span > < span class = "nb" > list< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _check_values< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > ))< / span >
< span class = "k" > def< / span > < span class = "nf" > clean< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "n" > value< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > prepare_value< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > required< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "n" > value< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s1" > ' required' < / span > < span class = "p" > ],< / span > < span class = "n" > code< / span > < span class = "o" > =< / span > < span class = "s1" > ' required' < / span > < span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > required< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "n" > value< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > none< / span > < span class = "p" > ()< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "nb" > list< / span > < span class = "p" > ,< / span > < span class = "nb" > tuple< / span > < span class = "p" > )):< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s1" > ' list' < / span > < span class = "p" > ],< / span > < span class = "n" > code< / span > < span class = "o" > =< / span > < span class = "s1" > ' list' < / span > < span class = "p" > )< / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _check_values< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "c1" > # Since this overrides the inherited ModelChoiceField.clean< / span >
< span class = "c1" > # we run custom validators here< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > run_validators< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > qs< / span >
< span class = "k" > def< / span > < span class = "nf" > _check_values< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Given a list of possible PK values, return a QuerySet of the< / span >
< span class = "sd" > corresponding objects. Raise a ValidationError if a given value is< / span >
< span class = "sd" > invalid (not a valid PK, not in the queryset, etc.)< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > key< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field_name< / span > < span class = "ow" > or< / span > < span class = "s1" > ' pk' < / span >
< span class = "c1" > # deduplicate given values to avoid creating many querysets or< / span >
< span class = "c1" > # requiring the database backend deduplicate efficiently.< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > value< / span > < span class = "o" > =< / span > < span class = "nb" > frozenset< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "ne" > TypeError< / span > < span class = "p" > :< / span >
< span class = "c1" > # list of lists isn' t hashable, for example< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s1" > ' list' < / span > < span class = "p" > ],< / span >
< span class = "n" > code< / span > < span class = "o" > =< / span > < span class = "s1" > ' list' < / span > < span class = "p" > ,< / span >
< span class = "p" > )< / span >
< span class = "k" > for< / span > < span class = "n" > pk< / span > < span class = "ow" > in< / span > < span class = "n" > value< / span > < span class = "p" > :< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > filter< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "n" > key< / span > < span class = "p" > :< / span > < span class = "n" > pk< / span > < span class = "p" > })< / span >
< span class = "k" > except< / span > < span class = "p" > (< / span > < span class = "ne" > ValueError< / span > < span class = "p" > ,< / span > < span class = "ne" > TypeError< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s1" > ' invalid_pk_value' < / span > < span class = "p" > ],< / span >
< span class = "n" > code< / span > < span class = "o" > =< / span > < span class = "s1" > ' invalid_pk_value' < / span > < span class = "p" > ,< / span >
< span class = "n" > params< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "s1" > ' pk' < / span > < span class = "p" > :< / span > < span class = "n" > pk< / span > < span class = "p" > },< / span >
< span class = "p" > )< / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "o" > .< / span > < span class = "n" > filter< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "p" > {< / span > < span class = "s1" > ' < / span > < span class = "si" > %s< / span > < span class = "s1" > __in' < / span > < span class = "o" > %< / span > < span class = "n" > key< / span > < span class = "p" > :< / span > < span class = "n" > value< / span > < span class = "p" > })< / span >
< span class = "n" > pks< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > o< / span > < span class = "p" > ,< / span > < span class = "n" > key< / span > < span class = "p" > ))< / span > < span class = "k" > for< / span > < span class = "n" > o< / span > < span class = "ow" > in< / span > < span class = "n" > qs< / span > < span class = "p" > }< / span >
< span class = "k" > for< / span > < span class = "n" > val< / span > < span class = "ow" > in< / span > < span class = "n" > value< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "ow" > not< / span > < span class = "ow" > in< / span > < span class = "n" > pks< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s1" > ' invalid_choice' < / span > < span class = "p" > ],< / span >
< span class = "n" > code< / span > < span class = "o" > =< / span > < span class = "s1" > ' invalid_choice' < / span > < span class = "p" > ,< / span >
< span class = "n" > params< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "s1" > ' value' < / span > < span class = "p" > :< / span > < span class = "n" > val< / span > < span class = "p" > },< / span >
< span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > qs< / span >
< span class = "k" > def< / span > < span class = "nf" > prepare_value< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > ,< / span > < span class = "s1" > ' __iter__' < / span > < span class = "p" > )< / span > < span class = "ow" > and< / span >
< span class = "ow" > not< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > ,< / span > < span class = "nb" > str< / span > < span class = "p" > )< / span > < span class = "ow" > and< / span >
< span class = "ow" > not< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > ,< / span > < span class = "s1" > ' _meta' < / span > < span class = "p" > )):< / span >
< span class = "n" > prepare_value< / span > < span class = "o" > =< / span > < span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > prepare_value< / span >
< span class = "k" > return< / span > < span class = "p" > [< / span > < span class = "n" > prepare_value< / span > < span class = "p" > (< / span > < span class = "n" > v< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > v< / span > < span class = "ow" > in< / span > < span class = "n" > value< / span > < span class = "p" > ]< / span >
< span class = "k" > return< / span > < span class = "nb" > super< / span > < span class = "p" > ()< / span > < span class = "o" > .< / span > < span class = "n" > prepare_value< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > has_changed< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > initial< / span > < span class = "p" > ,< / span > < span class = "n" > data< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > disabled< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "kc" > False< / span >
< span class = "k" > if< / span > < span class = "n" > initial< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > initial< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > if< / span > < span class = "n" > data< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< span class = "n" > data< / span > < span class = "o" > =< / span > < span class = "p" > []< / span >
< span class = "k" > if< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > initial< / span > < span class = "p" > )< / span > < span class = "o" > !=< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > data< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "kc" > True< / span >
< span class = "n" > initial_set< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > value< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > prepare_value< / span > < span class = "p" > (< / span > < span class = "n" > initial< / span > < span class = "p" > )}< / span >
< span class = "n" > data_set< / span > < span class = "o" > =< / span > < span class = "p" > {< / span > < span class = "nb" > str< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > value< / span > < span class = "ow" > in< / span > < span class = "n" > data< / span > < span class = "p" > }< / span >
< span class = "k" > return< / span > < span class = "n" > data_set< / span > < span class = "o" > !=< / span > < span class = "n" > initial_set< / span >
< span class = "k" > def< / span > < span class = "nf" > modelform_defines_fields< / span > < span class = "p" > (< / span > < span class = "n" > form_class< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > form_class< / span > < span class = "p" > ,< / span > < span class = "s1" > ' _meta' < / span > < span class = "p" > )< / span > < span class = "ow" > and< / span > < span class = "p" > (< / span >
< span class = "n" > form_class< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > fields< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span > < span class = "ow" > or< / span >
< span class = "n" > form_class< / span > < span class = "o" > .< / span > < span class = "n" > _meta< / span > < span class = "o" > .< / span > < span class = "n" > exclude< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "kc" > None< / span >
< span class = "p" > )< / span >
< / pre > < / div >
< / div >
< / div >
< / div >
2020-06-15 21:52:33 +02:00
< div class = "sphinxsidebar" role = "navigation" aria-label = "main navigation" >
< div class = "sphinxsidebarwrapper" >
< p class = "logo" > < a href = "../../../index.html" >
< img class = "logo" src = "../../../_static/evennia_logo.png" alt = "Logo" / >
< / a > < / p >
< div id = "searchbox" style = "display: none" role = "search" >
< h3 id = "searchlabel" > Quick search< / h3 >
< div class = "searchformwrapper" >
< form class = "search" action = "../../../search.html" method = "get" >
< input type = "text" name = "q" aria-labelledby = "searchlabel" / >
< input type = "submit" value = "Go" / >
< / form >
< / div >
< / div >
< script > $ ( '#searchbox' ) . show ( 0 ) ; < / script >
< h3 > Versions< / h3 >
< ul >
< li > < a href = "models.html" > 1.0-dev (develop branch)< / a > < / li >
< li > < a href = "../../../../0.9.1/index.html" > 0.9.1 (master branch)< / a > < / li >
< / ul >
2020-06-13 00:36:45 +02:00
2020-06-15 21:52:33 +02:00
< / div >
< / div >
< div class = "clearer" > < / div >
< / div >
< div class = "related" role = "navigation" aria-label = "related navigation" >
< h3 > Navigation< / h3 >
< ul >
< li class = "right" style = "margin-right: 10px" >
< a href = "../../../genindex.html" title = "General Index"
>index< / a > < / li >
< li class = "right" >
< a href = "../../../py-modindex.html" title = "Python Module Index"
>modules< / a > |< / li >
< li class = "nav-item nav-item-0" > < a href = "../../../index.html" > Evennia 1.0-dev documentation< / a > » < / li >
< li class = "nav-item nav-item-1" > < a href = "../../index.html" > Module code< / a > » < / li >
< / ul >
< / div >
< div class = "footer" role = "contentinfo" >
© Copyright 2020, The Evennia developer community.
Created using < a href = "http://sphinx-doc.org/" > Sphinx< / a > 2.4.4.
< / div >
< / body >
2020-06-13 00:36:45 +02:00
< / html >