FormGenScript: formGen.2.py

File formGen.2.py, 1.2 KB (added by p.bach, 10 years ago)

This version uses the same names for form fields as the model fields. Not the verbose name.

Line 
1from optparse import OptionParser
2import sys
3import os
4
5try:
6    import settings
7except ImportError:
8    print "Settings file not found. Place this file in the same dir as manage.py"
9    sys.exit()
10
11project_directory = os.path.dirname(settings.__file__)
12project_name = os.path.basename(project_directory)
13sys.path.append(os.path.join(project_directory, ".."))
14project_module = __import__(project_name, '', '', [''])
15sys.path.pop()
16os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % project_name
17
18from django.newforms import form_for_model
19
20p = OptionParser()
21
22p.add_option("-a", "--app", dest="app", help="The app which contains the model")
23p.add_option("-m", "--model", dest="model", help="The model to produce the Form for")
24
25options, args = p.parse_args()
26
27if not(options.model and options.app):
28    p.print_help()
29    sys.exit()
30
31m = __import__("%s.%s.models" % (project_name, options.app,), '', '', [options.model])
32
33a = getattr(m, options.model)
34
35fields = a._meta.fields + a._meta.many_to_many
36
37print "class %sForm(forms.Form):" % (options.model)
38for f in fields:
39    formfield = f.formfield()
40    if formfield:
41        fieldtype = formfield.__str__().split(".")[3].split(" ")[0]
42        print "    %s = forms.%s()" % (f.name, fieldtype)
Back to Top