Este repositório contém 4 scripts úteis para automatizar a criação de aplicações, model e admin no Django.
Certifique-se de que você tem o Python instalado e que está dentro do ambiente virtual do seu projeto Django.
python -m venv venv # Criar ambiente virtual (se necessário)
source venv/bin/activate # Ativar no Linux/macOS
venv\Scripts\activate # Ativar no WindowsInstale as dependências necessárias:
pip install -r requirements.txtEste script cria automaticamente a estrutura de diretórios e arquivos para um novo app Django.
python setup_app.py <nome_do_app>python setup_app.py productapps/<nome_do_app>/
api/
serializers.py
viewsets.py
managers/
<nome_do_app>_manager.py
signals.py
filters.py
Este script cria automaticamente um arquivo models.py na raiz do projeto, dentro da pasta core, contendo a definição do BaseModel.
python setup_basemodel.py <nome_da_pasta_core>python setup_basemodel.py corefrom django.db import models
from django.utils import timezone
class BaseModelManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(deleted_at__isnull=True)
class BaseModelAllManager(models.Manager):
def get_queryset(self):
return super().get_queryset()
class BaseModel(models.Model):
updated_at = models.DateTimeField(auto_now=True, db_index=True, null=True)
created_at = models.DateTimeField(auto_now_add=True, null=True)
deleted_at = models.DateTimeField(null=True, blank=True)
objects = BaseModelManager()
obj_all = BaseModelAllManager()
class Meta:
abstract = True
def delete(self, *args, **kwargs):
self.deleted_at = timezone.now()
self.save()Este script adiciona automaticamente um modelo Django ao arquivo models.py do app especificado.
python setup_model.py <nome_do_app> <campo1=tipo,parametros> <campo2=...>python setup_model.py evaluation 'desc=c,225,n,b,index' 'published=b,df=False' 'status_user_type=choice(user,admin,platform),120,n,index' 'evaluation=i,df=0,n,b' 'rate=f,df=0'from django.db import models
from api_core.models import BaseModel
STATUS_USER_TYPE_CHOICES = (
('user', 'user'),
('admin', 'admin'),
('platform', 'platform')
)
class Evaluation(BaseModel):
desc = models.CharField(max_length=225, blank=True, db_index=True)
published = models.BooleanField(default=False)
status_user_type = models.CharField(
choices=STATUS_USER_TYPE_CHOICES,
max_length=120,
default='user',
null=True, blank=True, db_index=True
)
evaluation = models.IntegerField(default=0, blank=True)
rate = models.FloatField(default=0)
class Meta:
verbose_name = "Evaluation"
verbose_name_plural = "Evaluations"
ordering = ['-id']
def __str__(self) -> str:
return f"Evaluation {self.name}"- c:
CharField(Texto) →max_length, n=null, b=blank, index=db_index - b:
BooleanField→df=default - f:
FloatField→df=default - i:
IntegerField→df=default, n=null, b=blank - choice(...):
CharFieldcom opções →choice=VARIAVEL, max_length, n=null, index=db_index
- O nome do modelo gerado sempre será capitalizado.
- Os scripts não sobrescrevem arquivos existentes, permitindo ajustes manuais pós-criação.
Este script cria automaticamente a estrutura do admin.py para um app Django.
python setup_admin.py <nome_do_app>python setup_admin.py paymentfrom django.contrib import admin
from apps.payment.models import Payment
@admin.action(description='Teste action')
def test_action(modeladmin, request, queryset):
for instance in queryset:
print(instance)
@admin.register(Payment)
class PaymentAdmin(admin.ModelAdmin):
list_display = (
'id',
)
list_display_links = ('id', )
fields = (
'id',
)
readonly_fields = (
'id',
)
search_fields = [
'id',
]
ordering = ['-created_at']
actions = [
test_action,
]
inlines = ()- O script sobrescreve o arquivo
admin.pyexistente no app especificado. - O nome do modelo é capitalizado automaticamente com base no nome do app.
- A estrutura gerada segue as melhores práticas do Django Admin.
Se desejar contribuir, abra um Pull Request com melhorias ou novos recursos. Feedbacks são bem-vindos!
Este projeto está sob a licença MIT.