Возможно ли использовать f-строки с Concat(), Value() и F()
У меня есть столбец varchar, значения которого я хотел бы обновить. Вот что я пробовал до сих пор:
for item in Item.objects.filter():
some_items = get_some_items(item)
Item.objects.filter(field=item.field).difference(some_items).update(
field=Concat(
Value(settings.PREFIX), Value(f"{F('id'):>010d}")
)
)
Что дает мне TypeError: unsupported format string passed to F.__format__
Мне нужна помощь в том, как я могу достичь этого, если это возможно.
Учитывая, что в моем случае f-строка использовалась для заполнения, функции базы данных LPAD и CAST пригодились (мне определенно нужно изучать SQL). Вот запрос на обновление:
Item.objects.update(
field=Concat(
Value('prefix'), LPad(Cast('id', output_field=CharField()), 11, Value('0'))
)
)