Как мне получить постоянный столбец в Django ORM?

#python #django

#python #django

Вопрос:

Я изучаю ORM. Однако есть некоторые вещи, которые я не понимаю даже после прочтения документации.

Как мне получить постоянный столбец в Django ORM?

SQL здесь.

 select *, 'a' as a from book;
  

Это набор запросов, который я пробовал

 Book.objects.annotate(a=Value('a'))
  

Ошибка здесь.

 django.core.exceptions.FieldError: Cannot resolve expression type, unknown output_field
  

Ответ №1:

При выполнении вашего кода я получаю следующую ошибку:

 FieldError('Cannot resolve expression type, unknown output_field')
  

Это означает, что django не знает тип, к которому должно привести ваше аннотированное поле.

Чтобы исправить это, вам нужно обернуть аннотацию в ExpressionWrapper :

 from django.db.models import Value, ExpressionWrapper

Book.objects.annotate(a=ExpressionWrapper(
    Value('a'), 
    output_field=models.CharField(max_length=45),
))
  

Комментарии:

1. Успешно. Большое вам спасибо.