sql >> Databasteknik >  >> RDS >> Mysql

Kan jag använda Django F()-objekt med strängsammansättning?

Jag hade ett liknande problem; i grund och botten ville jag sammanfoga två fält för att få det fullständiga namnet på en användare. Jag fick det löst på detta sätt (men måste säga att jag använde 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()))

där, F('...') utvärderar dess argument som en fråga, så du kan fråga ett fält av själva modellen, eller spänna över modeller som du skulle göra i filter/get, medan Value('...') utvärderar dess argument bokstavligen (i mitt fall behövde jag ett mellanslag mellan first_name och last_name ), och output_field=... anger typen av det kommenterade fältet (jag ville vara ett CharField ).För mer info kan du läsa Django-dokument om Concat

Hoppas det är till hjälp för någon där ute. Skål



  1. Hur ekar man slumpmässiga rader från databasen?

  2. Skapa ett index på en tabellvariabel

  3. Tjäna pengar med oanvända saker:En datamodell för delningsekonomi

  4. Nya Oracle-kompatibilitetsfunktioner i PostgresPlus Advanced Server 9.3Beta