Пользовательская функция для аннотации
Я пытаюсь извлечь записи с помощью моей модели 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)