Skip to main content

Introduction

Django simplify provides Ruby on Rails-like command line functionalities, models and helper functions so you can focus on development and removes the pain of repeating frequent actions.

Requirements

  • Python 3.6 and above

  • Django (tested with 3.1, probably works with any version that supports

    Python 3)

Installation

django-simplify can be installed via pip.

$ pip install django-simplify

Then just add simplify to your INSTALLED_APPS.

Below are several example commands you can run.

$ python manage.py create_app <app_name>

Features

  • timestamp for every model

  • alphabetic filter for admin

  • model, view, template and url route generator

  • automatic import

Management commands

1. create_app

  • automatically adds a urls.py file after app is created.

  • adds newly created app in the settings.py file under INSTALLED_APPS

  • creates index, edit, create and detail view and respective templates

  • adds the app route to your project’s urls.py file

Usage

$ python manage.py create_app <app_name>

2. create_model

Creates a model and their respective fields. the following types maps to respective Django model fields. It will also add the app to the django admin too.

  • 121, o2o or set -> OneToOneField

  • bool -> BooleanField

  • date -> DateField

  • datetime or dt -> DateTimeField

  • dict or m2m -> ManyToManyField

  • email -> EmailField

  • file -> FileField

  • list or fk -> ForeignKey

  • float -> FloatField

  • dec -> DecimalField

  • img or image -> ImageField

  • int -> IntegerField

  • str or char -> CharField

  • txt or text -> TextField

Usage

$ python manage.py create_app <app_name> <model_name> field_name:type field_name:type ...

an example

$ python manage.py create_app member Member first_name:text last_name:text age:int

will generate the following code in the member/models.py file

class Member(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    age = models.IntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.first_name

Specifying relationships

Specifying ForeignKey, OneToOneField or ManyToManyField is quite easy. just add an =<related_model>. See example

$ python manage.py create_app <app_name> <model_name> field_name:type=related_model

# an example
# if the related model is in the same models.py file, specify it as app_name.Model
$ python manage.py create_app author Author name:char books:fk=Book # or
$ python manage.py create_app author Author name:char books:fk=author.Book

# if in a different app. (say book model)
# obviously you should be able to substitute fk with m2m, o2o, 121
$ python manage.py create_app author Author name:char books:fk=book.Book

will create the following

class Author(models.Model):
    name = models.CharField(max_length=50)
    books = models.ForeignKey('book.Book', on_delete=models.CASCADE)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

3. create_view

Creates a view, generate its respective template and adds the path in the urls.py file

Usage

$ python manage.py create_view <app_name> <view_name>

an example

$ python manage.py create_view member MemberDetail


Helper models
################

- simplify.utils.TimeBasedModel
    - Provides the `created_at` and `updated_at` fields for timestamp

- simplify.utils.NamedTimeBasedModel
    - Provides the `name`, `created_at` and `updated_at` fields.

- simplify.utils.AlphaNumericFilterAdmin
    - when subclassed, it allows the items to be filtered alphabetically by either A-Z or 0-9
    - **Note**: for this to work, you must specify values for `alphanumeric_filter` in the model admin.


Usage
######

.. code-block:: python

  # models.py
  from simplify.utils import TimeBasedModel, NamedTimeBasedModel

  class MyModel(TimeBasedModel):
      extra_fields = ....



.. code-block:: python

  # admin.py
  from simplify.utils import AlphaNumericFilterAdmin

  class MemberAdmin(AlphaNumericFilterAdmin):
      alphanumeric_filter = ["first_name", "last_name", 'age'] # this part is what creates the filter
      list_filter = ['age']
      list_display = ['first_name', 'last_name',]

Todo

  • add more helper functions

  • add documentation

Acknowledgements

I’d like to say a big thank you to God without which this wouldn’t be possible. I would also like to say thanks to everyone who has and will contribute to this in the future.

Metadata

Release files for django-simplify 0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-simplify 0.2
File Size Uploaded
django-simplify-0.2.tar.gz 9.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-simplify 0.2
File Interpreter ABI Platform
django_simplify-0.2-py3.8.egg Legacy Egg format - - Details

Total release size: 34.6 kB

Release files / django-simplify-0.2.tar.gz

Download URL django-simplify-0.2.tar.gz
Size 9.8 kB
Tags Source
SHA-256 checksum
How to use checksums
fe5ad4db9d092dabe93584c3fb65dd5feba8da3bf7025ebe476d7fc2898e9868
BLAKE2b-256 checksum
How to use checksums
9497de70bf5a2aa67cae008432552295cb93a00e50588d25d4e2d0a5443249b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5

Release files / django_simplify-0.2-py3.8.egg

Download URL django_simplify-0.2-py3.8.egg
Size 24.8 kB
Tags Egg
SHA-256 checksum
How to use checksums
f7dbe66594525c87fd86ef530ca292b77b2e97a11c9429d8ec26cfa9b267d42c
BLAKE2b-256 checksum
How to use checksums
d8c91dd7d6dee0f34baa31bdd47aec821ca761a36458c65b7bae546d02e66c41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5

Release history Release notifications | RSS feed

This release

0.2 This release

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

1 release file

0.1.1

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page