Django

Code

Changeset 4205

Show
Ignore:
Timestamp:
12/14/06 23:46:11 (2 years ago)
Author:
adrian
Message:

newforms: Added initial implementation of form_for_model and form_for_fields

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/db/models/fields/__init__.py

    r4105 r4205  
    333333            return self._choices 
    334334    choices = property(_get_choices) 
     335 
     336    def formfield(self): 
     337        "Returns a django.newforms.Field instance for this database Field." 
     338        from django.newforms import CharField 
     339        # TODO: This is just a temporary default during development. 
     340        return CharField(label=capfirst(self.verbose_name)) 
    335341 
    336342class AutoField(Field): 
  • django/trunk/django/newforms/models.py

    r4103 r4205  
    11""" 
    2 Helper functions for creating Forms from Django models and database field objects. 
     2Helper functions for creating Form classes from Django models 
     3and database field objects. 
    34""" 
     5 
     6from forms import BaseForm, DeclarativeFieldsMetaclass, SortedDictFromList 
    47 
    58__all__ = ('form_for_model', 'form_for_fields') 
    69 
    710def form_for_model(model): 
    8     "Returns a Form instance for the given Django model class." 
    9     raise NotImplementedError 
     11    "Returns a Form class for the given Django model class." 
     12    opts = model._meta 
     13    fields = SortedDictFromList([(f.name, f.formfield()) for f in opts.fields + opts.many_to_many]) 
     14    return type(opts.object_name + 'Form', (BaseForm,), {'fields': fields, '_model_opts': opts}) 
    1015 
    1116def form_for_fields(field_list): 
    12     "Returns a Form instance for the given list of Django database field instances." 
    13     raise NotImplementedError 
     17    "Returns a Form class for the given list of Django database field instances." 
     18    fields = SortedDictFromList([(f.name, f.formfield()) for f in field_list]) 
     19    return type('FormForFields', (BaseForm,), {'fields': fields})