Skip to main content

django-formfield

Project description

Getting Started

BUILD

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)

https://github.com/jsoa/django-formfield/raw/master/docs/_images/ss001.png

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:

https://github.com/jsoa/django-formfield/raw/master/docs/_images/ss002.png

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..

https://github.com/jsoa/django-formfield/raw/master/docs/_images/ss003.png

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-formfield-0.1.1.tar.gz (679.9 kB view details)

Uploaded Source

File details

Details for the file django-formfield-0.1.1.tar.gz.

File metadata

File hashes

Hashes for django-formfield-0.1.1.tar.gz
Algorithm Hash digest
SHA256 af5f66ee015549706b515cdd6223ad7b1e834310a5f7f1531e617bb3a45d2981
MD5 cf303bc1227c3327e940a4176aba6e25
BLAKE2b-256 0e41279b4aa62ed960b671886a5fc7c35c8ec1245042e2fd5086d7aba87c6b94

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page