Automagically gerenrates Django CRUD Automation.
pipenv shell
pipenv install
python setup.py install
- Add
dca
to installed apps
Example
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# dca
'dca',
# Private Apps
'sample.core',
]
- Define models in
<app-name>/models.py
Example
# Djnago imports.
from django.db.models import (Model, TextField, CharField)
class Post(Model):
title = CharField(max_length=280)
content = TextField()
- Add dca config to settings
Example
DCA_CHOICES = 'sample.core.choices'
# List of apps for which we want to generate APIs
DCA_APPS = [
'sample.core'
]
DCA_DIR = f'{BASE_DIR}/sample'
run this
python managr.py generate
and it will gernerate dbapi file <app-name>/dbapi.py
# DO NOT EDIT THIS FILE MANUALLY
# THIS FILE IS AUTO-GENERATED
# MANUAL CHANGES WILL BE DISCARDED
# PLEASE READ DCA DOCS
from sample.core.models import Letter # NOQA
DCA_IGNORE_FIELDS = ['created_on', 'updated_on', 'id'] # NOQA
def read_letter(*args, **kwargs):
try:
return Letter.objects.get(*args, **kwargs)
except Letter.DoesNotExist:
return None
def read_letters_filter(*args, **kwargs):
return Letter.objects.filter(*args, **kwargs)
def create_letter(*args, **kwargs):
for ignore_field in DCA_IGNORE_FIELDS:
if ignore_field in kwargs:
del kwargs[ignore_field]
for key in list(kwargs):
if kwargs[key] in [None, 'None', '']:
del kwargs[key]
return Letter.objects.create(*args, **kwargs)
def update_letter(id, *args, **kwargs):
for ignore_field in DCA_IGNORE_FIELDS:
if ignore_field in kwargs:
del kwargs[ignore_field]
for key in list(kwargs):
if kwargs[key] in [None, 'None', '']:
del kwargs[key]
return Letter.objects.filter(id=id).update(*args, **kwargs)
def delete_letter(id):
return Letter.objects.get(id=id).delete()
We're working on auto gererating serializers and view for crud operations for any model.
⭐ this repo
PRs are welcomed.
MIT © priyanshujain
- Inspired from garuda by dhilipsiva