Skip to content
🐍 Tiny app to provide basic behaviors to Django models
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
basic_models_behaviors
docs
tests
.gitignore
.travis.yml
AUTHORS.rst
LICENSE.rst
MANIFEST.in
README.rst
setup.py

README.rst

Django: Basic Models Behaviors

Latest Version on PyPI Supported Python versions TravisCI status

Tiny app to provide basic behaviors for django models, like:

  • Timestampable
  • Publishable
  • SoftDeletable
  • Cacheable

Installation

From PyPI:

$ pip install django-basic-models-behaviors

Usage

PublishableModel

Here is an example of Article using PublishableModel:

from basic_models_behaviors import models as behaviors
from django.db import models

class Article(behaviors.PublishableModel):
    title = models.CharField(max_length=255)
    contents = models.TextField()

Then:

>>> article = Article(title='Foo', contents='Lorem lipsum')
>>> article.publish()
>>> article.is_published()
True
>>> article.unpublish()
>>> article.is_published()
False
>>> article.is_not_published()
True

SoftDeletableModel

SoftDeletableModel behavior will add deleted_at field in set the current timestamp instead of delete the object. force_delete() will actually delete the model.

In your models.py:

from basic_models_behaviors import models as behaviors
from django.db import models

class Article(behaviors.SoftDeletableModel):
    title = models.CharField(max_length=255)
    contents = models.TextField()

Then:

>>> from models import Article
>>> article = Article(title='foo', contents='Lorem lipsum')
>>> article.delete()
>>> article.has_been_deleted()
True
>>> article.undelete()
>>> article.has_been_deleted()
False
>>> article.force_delete()

Tests

Run tests:

$ pip install -r tests/requirements.txt
$ py.test --ds=tests.settings tests

Authors

You can’t perform that action at this time.