Django modeltranslation queries fallback

后端 未结 2 1788
走了就别回头了
走了就别回头了 2020-12-20 18:36

I\'m using django modeltranslation for a multi-language site.

Language fallback works good when reading attributes directly. For example, if current language is Germ

相关标签:
2条回答
  • 2020-12-20 19:17

    The thing to do here is to explicitly query the desire language. In your case:

    from django.db.models import Q
    # ...
    # define your query like this: 
    results = MyModel.objects.filter(Q(title_de = 'hello') | Q(title_en = 'hello'))
    # supposing you have German and English languages set
    

    Why this work? Because when you query the specific language, ModelTranslation keep it. Otherwise it use the current language.

    I hope it helps!

    0 讨论(0)
  • 2020-12-20 19:28

    You must ensure that your model is registered in translation.py

    from modeltranslation.translator import register, TranslationOptions
    @register(YourModel)
    class YourModel(TranslationOptions):
        pass
    

    In this way all the queries that are done will return the appropriate field depending on the language in which it is, this because to register it is created a MultilingualManager

    0 讨论(0)
提交回复
热议问题