Пользовательская функция для аннотации

Я пытаюсь извлечь записи с помощью моей модели Django ORM:

users =   User.objects.values( "first_name", "last_name" ).annotate( user_level=custom_levels( F("user_level" ) ) );

Модель представлена:

  • first_name
  • last_name
  • user_level: может быть [1] или [1,13] (это происходит при сохранении MultipleSelect через forms.py)

Цель: Моя цель - обработать user_level в запросе, чтобы преобразовать эти идентификаторы в текст (у меня есть dict key:value с этими идентификаторами)

Есть подсказка? Спасибо

Не вижу причин, почему вы должны делать это на уровне ORM. Почему бы вам просто не сделать это с помощью свойства модели, которое будет преобразовывать значение этого поля в желаемое? Например, так:

class User(AbstractUser):
# ...

    @property
    def user_level_description(self):
        level_descriptions = {
            1: "Level One",
            2: "Level Two",
            # ...
        }
        return ", ".join(level_descriptions[level] for level in self.user_level)
Вернуться на верх