sql >> Databáze >  >> RDS >> Mysql

Mohu použít objekty Django F() se zřetězením řetězců?

Měl jsem podobný problém; v podstatě jsem chtěl zřetězit dvě pole, abych získal celé jméno uživatele. Vyřešil jsem to takto (ale musím říct, že jsem používal Postgres):

from django.db.models.functions import Concat
from django.db.models import F, Value, CharField

AnyModel.objects.filter(**kwargs).annotate(full_name=Concat(F('model__user_first_name'), Value(' '), F('model__user_last_name'), output_field=CharField()))

kde F('...') vyhodnotí svůj argument jako dotaz, takže se můžete dotazovat na pole samotného modelu nebo se rozprostírat napříč modely, jako byste to udělali ve filtru/získání, zatímco Value('...') vyhodnotí svůj argument doslovně (v mém případě jsem potřeboval umístit mezeru mezi first_name a last_name ) a output_field=... určuje typ anotovaného pole (chtěl jsem být CharField ). Pro více informací si můžete přečíst Dokumenty Django o Concat

Doufám, že to bude užitečné pro někoho tam venku. Na zdraví



  1. Vrácení čísla týdne ISO z data v SQL Server (T-SQL)

  2. Hledání pozice čísla v řetězci

  3. Sladění nabídky a poptávky – Řešení, část 1

  4. Jak zprovoznit UTF-8 ve webových aplikacích Java?