Могу ли я повторно использовать экземпляр output_field в Django ORM или мне всегда следует создавать дубликат?Python

Программы на Python
Ответить
Anonymous
 Могу ли я повторно использовать экземпляр output_field в Django ORM или мне всегда следует создавать дубликат?

Сообщение Anonymous »

У меня есть кодовая база Django, которая выполняет множество функций ORM Case/When/ExpressionWrapper/Coalesce/Cast, и некоторым из них иногда требуется поле в качестве аргумента — поле вывода.

Код: Выделить всё

from django.db.models import FloatField, F
some_param1=Sum(F('one_value')*F('second_value'), output_field=FloatField())
some_param2=Sum(F('one_value')*F('second_value'), output_field=FloatField())
some_param3=Sum(F('one_value')*F('second_value'), output_field=FloatField())
some_param4=Sum(F('one_value')*F('second_value'), output_field=FloatField())
some_param5=Sum(F('one_value')*F('second_value'), output_field=FloatField())
Иногда я задаюсь вопросом, почему я всегда создаю один и тот же экземпляр любого подкласса Field снова и снова. Есть ли какая-то разница, если я просто передам один экземпляр и разделю его между выражениями? F.E

Код: Выделить всё

from django.db.models import FloatField, F

float_field = FloatField()

some_param1=Sum(F('one_value')*F('second_value'), output_field=float_field)
some_param2=Sum(F('one_value')*F('second_value'), output_field=float_field)
some_param3=Sum(F('one_value')*F('second_value'), output_field=float_field)
some_param4=Sum(F('one_value')*F('second_value'), output_field=float_field)
some_param5=Sum(F('one_value')*F('second_value'), output_field=float_field)
Я не смог найти его в документации, а исходный код недостаточно документирован относительно этого параметра.
P.S. Пример ненастоящий, просто представьте себе большую функцию аннотации, которая выполняет большую часть обработки с использованием Case/When/ExpressionWrapper/Coalesce/Cast и имеет множество дублированных экземпляров поля в качестве выходного_поля.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ate-a-dupl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»