# parler.fields module

All fields that are attached to the models.

The core design of django-parler is to attach descriptor fields to the shared model, which then proxies the get/set calls to the translated model.

The `TranslatedField` objects are automatically added to the shared model, but may be added explicitly as well. This also allows to set the `any_language` configuration option. It’s also useful for abstract models; add a `TranslatedField` to indicate that the derived model is expected to provide that translatable field.

## The `TranslatedField` class

class parler.fields.TranslatedField(any_language=False)

  Proxy field attached to a model.

  The field is automatically added to the shared model. However, this can be assigned manually to be more explicit, or to pass the `any_language` value. The `any_language=True` option causes the attribute to always return a translated value, even when the current language and fallback are missing. This can be useful for “title” attributes for example.

  Example:

      from django.db import models
      from parler.models import TranslatableModel, TranslatedFieldsModel

      class MyModel(TranslatableModel):
          title = TranslatedField(any_language=True)  # Add with any-fallback support
          slug = TranslatedField()                    # Optional, but explicitly mentioned

      class MyModelTranslation(TranslatedFieldsModel):
          # Manual model class:
          master = models.ForeignKey(MyModel, related_name='translations', null=True)
          title = models.CharField("Title", max_length=200)
          slug = models.SlugField("Slug")