django-code-generator

Generate code from Django models for faster development


Keywords
django-code-generator, code-generation, code-generator, django, django-admin, django-rest-framework
License
MIT
Install
pip install django-code-generator==0.2.2

Documentation

django-code-generator

Latest Travis CI build status Latest PyPI version Python versions Code Climate Test coverage Requirements Status

Generate code from Django models for faster development. This project can generate a Django Rest Framework API or an admin for your app. You can also create your own templates so you can generate code for whatever you want.

To install django-code-generator, run this command in your terminal:

$ sudo pip install django-code-generator

This is the preferred method to install django-code-generator, as it will always install the most recent stable release. More info in the documentation

Then add it to your INSTALLED_APPS:

INSTALLED_APPS = [
    # ...
    'django_code_generator',
]

Usage

Generating code is as easy as:

$ python manage.py generator <template> <project app>

This project includes two default templates: admin and api. For example:

$ python manage.py generator admin myapp

Read the documentation for more info.

Create templates

A template is a directory with files that will be copied to the final path in your app. Template files can use Django Templates Syntax. When templates are generated, the app models are available to be used with the django template syntax.

For example if you create the template mytemplate you can use it for your app myapp with the command:

$ python manage.py generate mytemplate myapp

A template file example:

{% load code_generator_tags %}from django.contrib import admin
{% from_module_import app.name|add:'.models' models %}{% comment %}
{% endcomment %}
{% for model in models %}

@admin.register({{ model.name }})
class {{ model.name }}Admin(admin.ModelAdmin):
    """
    """
    list_display = (
        {% indent_items model.filter_field_names 8 quote='simple' %}
    )
    search_fields = (
        {% indent_items model.char_field_names 8 quote='simple' %}
    )
    {% if model.foreign_field_names %}autocomplete_fields = (
        {% indent_items model.foreign_field_names 8 quote='simple' %}
    ){% endif %}{% endfor %}

For more information see the docs.