# Translations without fallback languages

When a translation is missing, the fallback languages are used. However, when an object has no fallback languages, this still fails.

There are a few solutions to this problem:

1. Declare the translated attribute explicitly with `any_language=True`:

       from parler.models import TranslatableModel
       from parler.fields import TranslatedField

       class MyModel(TranslatableModel):
           title = TranslatedField(any_language=True)

   Now, the title will try to fetch one of the existing languages from the database.

2. Use `safe_translation_getter()` on attributes which don’t have an `any_language=True` setting. For example:

       model.safe_translation_getter("fieldname", any_language=True)

3. Catch the `TranslationDoesNotExist` exception. For example:

       try:
           return object.title
       except TranslationDoesNotExist:
           return ''

   Because this exception inherits from `AttributeError`, templates already display empty values by default.

4. Avoid fetching untranslated objects using queryset methods. For example:

       queryset.active_translations()

   Which is almost identical to:

       codes = get_active_language_choices()
       queryset.filter(translations__language_code__in=codes).distinct()

   Note that the same ORM restrictions apply here.