Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rhenter/django-models

Many useful Models to help you let models smart or with less code
https://github.com/rhenter/django-models

Last synced: 3 months ago
JSON representation

Many useful Models to help you let models smart or with less code

Awesome Lists containing this project

README

        

=============
Django Models
=============

|PyPI latest| |PyPI Version| |PyPI License| |CicleCI Status| |Coverage| |Docs| |Open Source? Yes!|

Django Models é uma biblioteca com vários Modelos úteis para Django para ajudá-lo a tornar seus templates inteligentes ou com menos código

Requirements
============

- Python 3.x
- Django 1.11 ou mais novo

Features
========

Generic Models
--------------

- ActiveModel

Modelo com campo boolean is_active

- CodeModel

Modelo com um campo code que gera automaticamente um hash de 16 caracteres por padrão. Muito util para identificar seu registro de forma mais humanizada

History models
--------------

- HistoryModel

Modelo que permite rastrear cada alteração feita na instância ao salvar para gerar um Historico de modificações da instância

- SerializerModel

Modelo com o metodo serialize que retorna um dict com todas as informações da instância sem precisar de um serializador configurado.

.. code-block:: python

from django_models.models import SerializerModel
...

class YourModel(SerializerModel)
name = models.CharField(max_length=255)
...

**Uso**

.. code-block:: python

In[1]: from . import YourModel
In[2]: instance = YourModel.objects.first()
In[3]: user.serialize()
Out[3]: {'id': 1, 'name': 'primeiro registro', ...}

- SlugModel

Modelo com um campo slug. util para se usar em urls ou referencias nominais

- TimestampedModel

Modelo com os campos Datetime, created_at and updated_at. Uteis para controlar quando uma instancia foi criada ou aterada.

- UUIDModel

Modelo que usa o campo id como um UUID. Util para poder ter um identificador único sem se preocupar com sequenciais.

Signals Models
--------------

- SignalsModel

Usando o SignalsModel, permite que você manipule ou execute um evento de acordo com os Signals do Django.

Quando Salvar:
- pre_save (Antes de Salvar)
- post_save (Depois de Salvar)

Quando Apagar:
- pre_delete (Antes de Apagar)
- post_delete (Depois de Apagar)

Examplo usando o signal Pre-save

.. code-block:: python

from django_models.models import SignalsModel
...

class YourModel(SignalsModel)
...
def pre_save(self):
do_something()

Soft Delete Signal Model
------------------------

- SoftDeleteSignalModel Models

É o SignalsModel com soft delete implementado. Permite que nada que você apague seja realmente apagado do sistema e de facil recuperação

Como Instalar
=============

Vamos la!
---------

Você pode instalar o Django Models usando pip:

.. code:: shell

$ pip install django-models

Se preferir instalar usando o codigo, pegue o endereço do repositorio git do GitHub e rode o setup.py

.. code:: shell

$ git clone [email protected]:rhenter/django_models.git
$ cd django_models
$ python setup.py install

Configurando
------------

To enable `django_models` in your project you need to add it to `INSTALLED_APPS` in your projects
`settings.py` file:

Para habilitar o `django_models` no seu projeto você precisa adiciona-lo ao `INSTALLED_APPS` no arquivo `settings.py` do seu projeto:

.. code-block:: python

INSTALLED_APPS = (
...
'django_models',
...
)

Documentação
============

Confira a ultima versão da documento do ``django-models`` em `GitHub Pages `_

Contribuição
============

Por favor envie pull requests, são muito apreciados.

1. Faço o Fork do repositorio `repository `_ no GitHub.
2. Crie uma branch fora da master e commit as suas modificações.
3. Instale as dependências. ``pip install -r requirements-dev.txt``
4. Instale o pre-commit. ``pre-commit install``
5. Rode os testes com ``cd test-django-project; py.test -vv -s``
6. Crie um Pull Request com a sua contribuição

.. |Docs| image:: https://img.shields.io/static/v1?label=DOC&message=GitHub%20Pages&color=%3CCOLOR%3E
:target: https://rhenter.github.io/django-models/
.. |PyPI Version| image:: https://img.shields.io/pypi/pyversions/django-models.svg?maxAge=60
:target: https://pypi.python.org/pypi/django-models
.. |PyPI License| image:: https://img.shields.io/pypi/l/django-models.svg?maxAge=120
:target: https://github.com/rhenter/django-models/blob/master/LICENSE
.. |PyPI latest| image:: https://img.shields.io/pypi/v/django-models.svg?maxAge=120
:target: https://pypi.python.org/pypi/django-models
.. |CicleCI Status| image:: https://circleci.com/gh/rhenter/django-models.svg?style=svg
:target: https://circleci.com/gh/rhenter/django-models
.. |Coverage| image:: https://codecov.io/gh/rhenter/django-models/branch/master/graph/badge.svg
:target: https://codecov.io/gh/rhenter/django-models
.. |Open Source? Yes!| image:: https://badgen.net/badge/Open%20Source%20%3F/Yes%21/blue?icon=github
:target: https://github.com/rhenter/django-models