Getting Started
django-formfield is a form field that accepts a django form as its first argument, and validates as well as render’s each form field as expected. Yes a form within a form, within a dream? There are two types of fields available, FormField and ModelFormField. For ModelFormField the data is stored in json. For FormField data is simply returned as a python dictionary (form.cleaned_data)
Installation
Installation is easy using pip or easy_install.
pip install django-formfield
or
easy_install django-formfield
Add to installed apps
INSTALLED_APPS = (
...
formfield,
...
)
Example
from django.db import models
from django import forms
from formfield import ModelFormField
class PersonMetaForm(forms.Form):
age = forms.IntegerField()
sex = forms.ChoiceField(choices=((1, 'male'), (2, 'female')), required=False)
class Person(models.Model):
name = CharField(max_length=200)
meta_info = ModelFormField(PersonMetaForm)
Which will result in something like this (using the admin)
The ModelFormField is automatically set to null=True, blank=True, this is because validation is done on the inner form. As a result you will see something like the following if we hit save on the change form:
If we supply the change for valid data you should get a python dictionary when retrieving the data:
>>> person = Person.objects.get(pk=1)
>>> person.meta_info
{u'age': 12, u'sex': u'1'}
The form is the only thing forcing valid input, behind the scenes the data is being serialized into json. Therefore on the python level we can supply meta_info any valid json::
>>> from sample_app.models import Person
>>> data = {'some': 'thing', 'is': 'wrong', 'here': 'help!'}
>>> p = Person.objects.create(name="Joan", meta_info=data)
>>> p.meta_info
{'is': 'wrong', 'some': 'thing', 'here': 'help!'}
Form within a form within a form within a form within a form…..
Sure its possible..
Metadata
Release files for django-formfield 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django-formfield-0.1.2.tar.gz | 706.9 kB | Details |
Release files / django-formfield-0.1.2.tar.gz
| Download URL | django-formfield-0.1.2.tar.gz |
|---|---|
| Size | 706.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fc88faf357ca04df212eae220492a28863128761e5c178debaefdcaf8e22e3ad
|
|
BLAKE2b-256 checksum How to use checksums |
8fc78a2208ccb4b30ec0ec04472f6e5b015b608bd304211a9f578941d6b27c4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |