Джанго Хвад запрос трансформируемыйМодель
Я использую Hvad для создания переводимых моделей, но получаю сообщение об ошибке, пытаясь получить модель.
У меня есть две модели классов, подобные этим:
class Boy(TranslatableModel):
age = models.PositiveSmallIntegerField()
toy = models.ForeignKey(Toy)
translations = TranslatedFields(
name = models.CharField(max_length=60),
)
class Toy(TranslatableModel):
price = models.PositiveSmallIntegerField()
translations = TranslatedFields(
model_name = models.CharField(max_length=60),
)
Я пытаюсь сделать запрос вроде:
Boy = Boy.objects.language('en').filter(name="john", toy__model_name="car")
Я получаю следующую ошибку: Чтобы получить доступ к переведенным полям, таким как "имя_модели" из непереведенной модели, вы должны использовать менеджер с поддержкой перевода. Для непереводимых моделей вы можете получить один, используя hvad.utils.get_translation_aware_manager. Для переводимых моделей используйте метод language().
Следующие работы идеально подходят:
Boy = Boy.objects.language('en').filter(name="john")
Так что ошибка в том, что я добавляю // toy__model_name="car" //
Что я делаю неправильно? Как добиться того, чего я хочу?
1 ответ
К сожалению, на данный момент глубоко переведенные аргументы не поддерживаются. Это что-то, что может измениться для следующего большого переписывания hvad, но пока нет расписания для этого. (он реализован в ветке разработки, но слишком глючит, чтобы его освоить)
Тем временем, вложенный запрос должен работать:
Boy = Boy.objects.language('en').filter(name="john", toy__in=Toy.objects.language('en').filter(model_name="car"))
При использовании postgresql производительность не должна сильно меняться, postgresql достаточно умен, чтобы правильно его оптимизировать.