sql >> Database >  >> RDS >> Mysql

Kan ik Django F()-objecten gebruiken met tekenreeksaaneenschakeling?

Ik had een soortgelijk probleem; eigenlijk wilde ik twee velden samenvoegen om de volledige naam van een gebruiker te krijgen. Ik heb het op deze manier opgelost (maar moet zeggen dat ik Postgres gebruikte):

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()))

waar, F('...') evalueert zijn argument als een query, zodat u een veld van het model zelf kunt doorzoeken, of modellen kunt overspannen zoals u zou doen in filter/get, terwijl Value('...') evalueert zijn argument letterlijk (in mijn geval had ik een spatie nodig tussen first_name en last_name ), en output_field=... specificeert het Type van het geannoteerde veld (ik wilde een CharField zijn) ). Voor meer informatie kunt u Django-documenten over Concat

Ik hoop dat het nuttig zal zijn voor iemand die er is. Proost



  1. Voor Nvarchar (Max) krijg ik maar 4000 tekens in TSQL?

  2. Automatische plancorrectie in SQL Server

  3. SQL Server 2008-ondersteuning wordt beëindigd. Wat nu?

  4. Nifi PutSQL Timestamp/Datetime-fout kan niet worden geconverteerd fout