README.rst
#####################
django-code-generator
#####################
.. image:: https://img.shields.io/github/workflow/status/Nekmo/django-code-generator/Publish.svg?style=flat-square&maxAge=2592000
:target: https://github.com/Nekmo/django-code-generator/actions?query=workflow%3APublish
:alt: Latest Publish CI build status
.. image:: https://img.shields.io/pypi/v/django-code-generator.svg?style=flat-square
:target: https://pypi.org/project/django-code-generator/
:alt: Latest PyPI version
.. image:: https://img.shields.io/pypi/pyversions/django-code-generator.svg?style=flat-square
:target: https://pypi.org/project/django-code-generator/
:alt: Python versions
.. image:: https://img.shields.io/codeclimate/maintainability/Nekmo/django-code-generator.svg?style=flat-square
:target: https://codeclimate.com/github/Nekmo/django-code-generator
:alt: Code Climate
.. image:: https://img.shields.io/codecov/c/github/Nekmo/django-code-generator/master.svg?style=flat-square
:target: https://codecov.io/github/Nekmo/django-code-generator
:alt: Test coverage
.. image:: https://img.shields.io/requires/github/Nekmo/django-code-generator.svg?style=flat-square
:target: https://requires.io/github/Nekmo/django-code-generator/requirements/?branch=master
:alt: 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:
.. code-block:: console
$ 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 <https://docs.nekmo.org/django-code-generator/installation.html>`_
Then add it to your ``INSTALLED_APPS``:
.. code-block:: python
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 <https://docs.nekmo.org/django-code-generator/readme.html#usage>`_ 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 <https://docs.djangoproject.com/en/dev/topics/templates/>`_. 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:
.. code-block:: django
{% 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 <https://docs.nekmo.org/django-code-generator/templates.html>`_.