hvad.models

hvad.models.create_translations_model(model, related_name, meta, **fields)

A model factory used to create the Translations Model. Makes sure that the unique_together option on the options (meta) contain ('language_code', 'master') as they always have to be unique together. Sets the master foreign key to model onto the Translations Model as well as the language_code field, which is a database indexed char field with a maximum of 15 characters.

Returns the new model.

hvad.models.contribute_translations(cls, rel)

Gets called from prepare_translatable_model() to set the descriptors of the fields on the Translations Model onto the model.

hvad.models.prepare_translatable_model(sender)

Gets called from Model‘s metaclass to customize model creation. Performs checks, then contributes translations and translation manager onto models that inherit TranslatableModel.

TranslatedFields

class hvad.models.TranslatedFields

A wrapper for the translated fields which is set onto TranslatableModel subclasses to define what fields are translated.

Internally this is just used because Django calls the contribute_to_class() method on all attributes of a model, if such a method is available.

contribute_to_class(self, cls, name)

Calls create_translations_model().

BaseTranslationModel

class hvad.models.BaseTranslationModel

A baseclass for the models created by create_translations_model() to distinguish Translations Model classes from other models. This model class is abstract.

TranslatableModelBase

class hvad.models.TranslatableModelBase

Deprecated since version 0.5.

Metaclass of TranslatableModel. It is no longer used and should be removed from metaclass inheritance tree in projects.

__new__(cls, name, bases, attrs)

TranslatableModel

class hvad.models.TranslatableModel

A model which has translated fields on it. Must define one and exactly one attribute which is an instance of TranslatedFields. This model is abstract.

If initalized with data, it splits the shared and translated fields and prepopulates both the Shared Model and the Translations Model. If no language_code is given, get_language() is used to get the language for the Translations Model instance that gets initialized.

Note

When initializing a TranslatableModel, positional arguments are only supported for the shared fields.

objects

An instance of hvad.manager.TranslationManager.

_shared_field_names

A list of field on the Shared Model.

_translated_field_names

A list of field on the Translations Model.

classmethod save_translations(cls, instance, **kwargs)

This classmethod is connected to the model’s post save signal from prepare_translatable_model() and saves the cached translation if it’s available.

translate(self, language_code)

Initializes a new instance of the Translations Model (does not check the database if one for the language given already exists) and sets it as cached translation. Used by end users to translate instances of a model.

safe_translation_getter(self, name, default=None)

Helper method to safely get a field from the Translations Model.

lazy_translation_getter(self, name, default=None)

Helper method to get the cached translation, and in the case the cache for some reason doesnt exist, it gets it from the database.

get_available_languages(self)

Returns a list of language codes in which this instance is available.

Extra information on _meta of Shared Models

The options (meta) on TranslatableModel subclasses have a few extra attributes holding information about the translations.

translations_accessor

The name of the attribute that holds the TranslatedFields instance.

translations_model

The model class that holds the translations (Translations Model).

translations_cache

The name of the cache attribute on this model.

Extra information on _meta of Translations Models

The options (meta) on BaseTranslationModel subclasses have a few extra attributes holding information about the translations.

shared_model

The model class that holds the shared fields (Shared Model).