sql >> Database teknologi >  >> RDS >> Mysql

Kan jeg bruge Django F()-objekter med strengsammenkædning?

Jeg havde et lignende problem; dybest set ønskede jeg at sammenkæde to felter for at få det fulde navn på en bruger. Jeg fik det løst på denne måde (men må sige, at jeg brugte 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()))

hvor, F('...') evaluerer dets argument som en forespørgsel, så du kan forespørge i et felt af selve modellen eller spænde over modeller, som du ville gøre i filter/get, mens Value('...') evaluerer dets argument bogstaveligt (i mit tilfælde havde jeg brug for et mellemrum mellem first_name og last_name ), og output_field=... angiver typen af ​​det kommenterede felt (jeg ønskede at være et CharField ).For mere info kan du læse Django-dokumenter om Konk.

Håber det vil være nyttigt for nogen derude. Skål



  1. MySQL PI() Funktion – Returner værdien af ​​π (pi)

  2. Understøtter MySQL historisk dato (som 1200)?

  3. Rails Resque-arbejdere fejler med PGError:Server lukkede forbindelsen uventet

  4. Hvordan slår jeg validering af mysql-adgangskode fra?