Topic guide
Making queries
Querying JSONField
… based on a given dictionary key, use that key as the lookup name: Multiple keys can be chained together to form a path lookup: If the key is an integer, it will be interpreted as an index transform in an …
Topic guide
Formsets
Initial data is what drives the main usability of a formset. As shown above you can define the number of extra forms.
Topic guide
Formsets
The absolute_max parameter to formset_factory() allows limiting the number of forms that can be instantiated when supplying POST data. This protects against memory exhaustion attacks using forged POST requests: When absolute_max is None, it defaults to max_num + 1000.
Topic guide
Formsets
Dealing with ordering and deletion of forms
BaseFormSet.can_order Default: False Lets you create a formset with the ability to order: This adds an additional field to each form. This new field is named ORDER and is an forms.IntegerField.
Topic guide
Formsets
Dealing with ordering and deletion of forms
BaseFormSet.can_delete Default: False Lets you create a formset with the ability to select forms for deletion: Similar to can_order this adds a new field to each form named DELETE and is a forms.BooleanField.
Topic guide
Formsets
Dealing with ordering and deletion of forms
If you call formset.save(commit=False), objects will not be deleted automatically.
Topic guide
Formsets
If you need to add additional fields to the formset this can be easily accomplished. The formset base class provides an add_fields method.
Topic guide
Formsets
BaseFormSet.as_p() : Renders the formset with the template_name_p template. BaseFormSet.as_table() : Renders the formset with the template_name_table template. BaseFormSet.as_ul() : Renders the formset with the template_name_ul template.
Topic guide
Working with forms
Forms in Django
… the database, for example) pass it to the template context expand it to HTML markup using template variables Rendering a form in a template involves nearly the same work as rendering any other kind of object, but there are some …
Topic guide
Creating forms from models
classModelForm[source] If you’re building a database-driven app, chances are you’ll have forms that map closely to Django models. For instance, you might have a BlogComment model, and you want to create a form that lets people submit comments.
Topic guide
Creating forms from models
ModelForm
As you might expect, the ForeignKey and ManyToManyField model field types are special cases: ForeignKey is represented by django.forms.ModelChoiceField, which is a ChoiceField whose choices are a model QuerySet.
Topic guide
Creating forms from models
ModelForm
Consider this set of models: With these models, the ModelForm subclasses above would be roughly equivalent to this (the only difference being the save() method, which we’ll discuss in a moment.):
Topic guide
Creating forms from models
ModelForm
You can create forms from a given model using the standalone function modelform_factory(), instead of using a class definition.
Topic guide
Creating forms from models
classmodels.BaseModelFormSet Like regular formsets, Django provides a couple of enhanced formset classes to make working with Django models more convenient. Let’s reuse the Author model from above: Using fields restricts the formset to use only the given fields.
Topic guide
Creating forms from models
Model formsets
As with a ModelForm, you can save the data as a model object. This is done with the formset’s save() method: The save() method returns the instances that have been saved to the database.
Topic guide
Creating forms from models
Model formsets
There are three ways to render a formset in a Django template.
Topic guide
File Uploads
Basic file uploads
If you’re saving a file on a Model with a FileField, using a ModelForm makes this process much easier.
Topic guide
How to use sessions
As a convenience, Django provides a way to test whether the user’s browser accepts cookies. Call the set_test_cookie() method of request.session in a view, and call test_cookie_worked() in a subsequent view – not in the same view call.
Topic guide
Format localization
When formatting is enabled, Django can use localized formats when parsing dates, times and numbers in forms. That means it tries different formats for different locales when guessing the format used by the user when inputting data on forms.
Topic guide
Internationalization and localization
localization Writing the translations and local formats. Usually done by translators. More details can be found in the W3C Web Internationalization FAQ, the Wikipedia article or the GNU gettext documentation. WARNING: Translation is controlled by the USE_I18N setting.