Джанго Хвад запрос трансформируемыйМодель

Я использую 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 достаточно умен, чтобы правильно его оптимизировать.

Другие вопросы по тегам