
Troubleshooting is a Lifestyle 😎 with Jack Linke
Published December 6, 2024
DjangoCon US 2016 - Solving Problems With Django Forms by Kirt Gittens
We'll look at a few core problems that we were able to solve with Django forms.
Dynamic Field Creation: What if you don't know what fields should be present on a Django form until runtime?. Solutions:
Viewing a form's fields as a data structure (convert a field definition to a dictionary) Manipulate self.fields on a form to dynamically add / remove forms from a field.
Pitfalls:
A fields validated attributes can't be manipulated dynamically because of Validators within the forms API. Dynamic form layouts become difficult to manage, crispyforms does not scale as a solution!
Validate a form via an API: How can external validations behave the same as internal errors? Solutions:
form.clean() can be used for form wide errors, and form.add_error can be used to integrate those external validation errors into your existing form so that calls like is_valid() still work as expected with your external validations.
Adding fields at runtime: How can the user add fields to a form after it has been rendered?
Solutions:
Javascript can be used for the UI, and if the fields are properly named, the same validations will work as long as the fields are part of the form.
Pitfalls: Creating a solution that creates a dynamic field that is validated, but doesn't render can cause issues with your layout solution (crispyforms fails again here)
This talk was presented at: https://2016.djangocon.us/schedule/presentation/27/
LINKS: Follow DjangCon US 👇 https://twitter.com/djangocon
Follow DEFNA 👇 https://twitter.com/defnado https://www.defna.org/
Note: We understand that names change, people change, and bodies change. We respect each individual's journey and privacy. If you have any concerns about a video or need us to remove content, please don't hesitate to contact us. We will handle your request with care and promptly address any issues.
Published December 6, 2024
Published December 6, 2024
Published December 6, 2024
Published December 6, 2024
Published December 6, 2024
Published December 6, 2024