Skip to content
Additional fields for(ever) Django.
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.
docs
examples
scripts
src/strawberry
.coveragerc
.gitignore
.hgignore
.isort.cfg
.pylintrc
CHANGELOG.rst
CREDITS.rst
LICENSE_GPL2.0.txt
LICENSE_LGPL_2.1.txt
MANIFEST.in
README.rst
ROADMAP.rst
TODOS.rst
pytest.ini
requirements.txt
runtests.py
setup.cfg
setup.py
tox.ini

README.rst

django-strawberry

Additional fields for(ever) Django.

Prerequisites

  • Django 1.8, 1.9, 1.10, 1.11 and 2.0.
  • Python 2.7, 3.6

Documentation

Documentation is available on Read the Docs.

Main features and highlights

  • MD5Field.

Installation

  1. Install latest stable version from PyPI:

    pip install django-strawberry

    or latest stable version from GitHub:

    pip install https://github.com/barseghyanartur/django-strawberry/archive/stable.tar.gz

    or latest stable version from BitBucket:

    pip install https://bitbucket.org/barseghyanartur/django-strawberry/get/stable.tar.gz

Usage

MD5 field

In case you want to have an MD5 field populated from another field of the same model.

Example 1

myapp/models.py

from django.db import models
from strawberry.fields import MD5Field

class MyModel(models.Model):

    title = models.CharField(max_length=255)
    title_hash = MD5Field(
        populate_from='title',
        null=True,
        blank=True
    )

    def __str__(self):
        return self.title

myapp/example.py

from myapp.models import MyModel

mymodel = MyModel.objects.create(title="Lorem7")
print(mymodel.title_hash)
'd48a712e77902d0558a3721d9a4740c9'

Example 2

The populate_from argument can also be a callable, that would expect the model instance as an argument. Thus, example identical to the first one would be:

myapp/models.py

from django.db import models
from strawberry.fields import MD5Field


def strip_title(instance):
    return instance.title.strip()


class MyModel(models.Model):

    title = models.CharField(max_length=255)
    title_hash = MD5Field(
        populate_from=strip_title,
        null=True,
        blank=True,
    )

    def __str__(self):
        return self.title

myapp/example.py

from myapp.models import MyModel

mymodel = MyModel.objects.create(title=" Lorem7 ")
print(mymodel.title_hash)
'd48a712e77902d0558a3721d9a4740c9'

Testing

Project is covered with tests.

To test with all supported Python/Django versions type:

tox

To test against specific environment, type:

tox -e py36-django110

To test just your working environment type:

./runtests.py

To run a single test in your working environment type:

./runtests.py src/strawberry/tests/test_fields.py

Or:

./manage.py test strawberry.tests.test_fields

It's assumed that you have all the requirements installed. If not, first install the test requirements:

pip install -r examples/requirements/test.txt

Writing documentation

Keep the following hierarchy.

=====
title
=====

header
======

sub-header
----------

sub-sub-header
~~~~~~~~~~~~~~

sub-sub-sub-header
^^^^^^^^^^^^^^^^^^

sub-sub-sub-sub-header
++++++++++++++++++++++

sub-sub-sub-sub-sub-header
**************************

License

GPL 2.0/LGPL 2.1

Support

For any issues contact me at the e-mail given in the Author section.

Author

Artur Barseghyan <artur.barseghyan@gmail.com>

You can’t perform that action at this time.