django_mycelium/translatable_fields
2020-02-16 13:15:17 +01:00
..
static/translatable_fields Initial commit 2018-03-08 18:22:58 +03:00
templates/translatable_fields Initial commit 2018-03-08 18:22:58 +03:00
__init__.py Format code with black 2020-02-16 13:15:17 +01:00
CHANGELOG.rst Move project related files to app 2020-02-16 13:14:28 +01:00
LICENSE Move project related files to app 2020-02-16 13:14:28 +01:00
models.py Initial commit 2018-03-08 18:22:58 +03:00
README.rst Move project related files to app 2020-02-16 13:14:28 +01:00
value.py Format code with black 2020-02-16 13:15:17 +01:00
widgets.py Format code with black 2020-02-16 13:15:17 +01:00

==========================
Django Translatable Fields
==========================

Translatable model fields for Django with admin integration. Uses PostgreSQL JSONField.

Installation
============


* Add application in `settings.py`

.. code:: python

    INSTALLED_APPS = (
        ...
        'translatable_fields',
        ...
    )
 
* Specify languages in `settings.py`

.. code:: python
 
    # Internationalization

    LANGUAGE_CODE = 'en'
    LANGUAGES = (
        ('en', 'English'),
        ('ru', 'Русский')
    )


* Add `TranslatableField` model fields

.. code:: python

    from django.db import models
    from django.utils.translation import ugettext_lazy as _

    from translatable_fields.models import TranslatableField


    class Position(models.Model):
        ...
        title = TranslatableField(
            verbose_name=_('title')
        )
        description = TranslatableField(
            verbose_name=_('description')
        )
        ...
        
* Create custom model admin form

.. code:: python

    from django import forms
    from django.contrib.postgres.forms import JSONField
    from ckeditor_uploader.widgets import CKEditorUploadingWidget

    from careers.models.position import Position
    from translatable_fields.widgets import TranslatableWidget


    class PositionAdminForm(forms.ModelForm):
        title = JSONField(widget=TranslatableWidget(widget=forms.TextInput))
        description = JSONField(widget=TranslatableWidget(widget=CKEditorUploadingWidget))

        class Meta:
            model = Position
            fields = (
                ...
                'title',
                'description',
                ...
            )

* Create custom model admin with custom form

.. code:: python

    from django.contrib import admin

    from careers.forms.admin.position import PositionAdminForm


    class PositionAdmin(admin.ModelAdmin):
        form = PositionAdminForm