Generate a Django model, views, URLconf, and templates using a single command.
Python JavaScript Ruby
Latest commit 0c66192 Mar 8, 2013 @modocache Merge pull request #27 from drillbits/django-1.5-support
Django 1.5 support
Failed to load latest commit information.
test_project [GI#6] Add i18n to command, prerendered tpls. Aug 13, 2012
.gitignore Initial commit. May 6, 2012
.rvmrc Add base, model generator tests. Jun 20, 2012
Gemfile.lock Add support for Travis CI. Aug 11, 2012
MANIFEST Bump version to v0.0.4a0. Aug 18, 2012
requirements.txt [GI#6] Add i18n to command, prerendered tpls. Aug 13, 2012

django-generate-scaffold build-status endorse

Generate a Django model, views, URLconf, and templates using a single command.


A screencast introducing django-generate-scaffold is available here.


Generating Models, Views, URL Patterns, and Templates

  • Install django-generate-scaffold:

    $ pip install django-generate-scaffold
  • Add generate_scaffold to your INSTALLED_APPS

  • Run the generatescaffold management command:

    $ python generatescaffold --help
    ... displays usage
  • Create a model using the syntax in the help message:

    $ python generatescaffold blogs Post title:string body:text is_public:bool blog:foreignkey=Blog
    ... Generates a Post model, with title (CharField), body (TextField),
    ...     is_public (BooleanField), and blog (ForeignKey) fields.

Generating Views, etc. Based on Existing Models

  • Alternatively, you can generate views, urlpatterns, and templates for an existing model:

    $ python generatescaffold blogs --model Post
    ... Generates views, etc. for Post
  • Note that if the model specified with the --model option has a DateField or a DateTimeField, date-based generic views will be generated based on that field. To specify a specific field to use, pass in the --timestamp-field option:

      $ python generatescaffold blogs --model Post --timestamp-field ctime

Limitations When Using Existing Models

For best results, existing models should implement a get_absolute_url method which conforms to the urlpatterns used by django-generate-scaffold:

    def get_absolute_url(self):
        return ('<app_name>_<model_name>_detail', (), {'pk':})

Not conforming to this model will lead to broken links and potentially other issues when rendering templates.


django-generate-scaffold is currently in ALPHA.

Running Tests

In order to run the test suite, install your local version of django-generate-scaffold and start a Selenium server and issue the following commands:

    $ cd django-generate-scaffold
    $ python install --force
    $ cd test_project
    $ python test_app/tests/

Consult .travis.yml for the exact steps necessary to run the test suite.

Autotesting via watchr

By installing the gems in the Gemfile, you can automatically run all non-Selenium based tests every time a file is modified:

    $ watchr autotest.rb

How to Contribute

  • Propose new features or report bugs by creating an issue on Github.
  • Add new features, tests, or fix stuff and issue a pull request.
  • Create a better, more eloquent screencast with less stammering.


If you experience any issues, please create an issue on Github.