У меня есть эта модель
from django.db import models
class TranslatedString(models.Model):
lang = models.CharField()
key = models.CharField()
value = models.CharField()
У меня есть следующие экземпляры этой модели:
a = TranslatedString(lang="en_US", key="my-string", value="hello world")
b = TranslatedString(lang="en_AU", key="my-string", value="g'day world")
c = TranslatedString(lang="ja_JP", key="my-string", value="こんにちは世界")
И у меня есть этот список языков, которые хочет пользователь
preferred_langs = ["en_CA", "en_US", "en_AU", "fr_CA"]
, который упорядочен по предпочтению. Я хотел бы вернуть значение, соответствующее первому элементу в этом списке. Даже если a
и b
соответствуют запросу типа
TranslatedString.objects.filter(key="my-string", lang__in=preferred_langs).first()
, я хочу, чтобы он был упорядочен по списку, чтобы я всегда получал a
.
I Можно сделать запрос для каждого элемента в preferred_langs
и вернуть, как только я найду подходящее значение, но есть ли лучший вариант? Я хотел бы сделать это одним запросом.