Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy mogę używać obiektów Django F() z konkatenacją ciągów?

miałem podobny problem; w zasadzie chciałem połączyć dwa pola, aby uzyskać pełną nazwę użytkownika. Tak to rozwiązałem (ale muszę powiedzieć, że używałem Postgresa):

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

gdzie, F('...') ocenia swój argument jako zapytanie, więc możesz zapytać o pole samego modelu lub rozciągnąć między modelami, tak jak robisz to w filter/get, podczas gdy Value('...') ocenia swój argument dosłownie (w moim przypadku potrzebowałem spacji między first_name i last_name ) i output_field=... określa Typ pola z adnotacjami (chciałem być CharField ).Aby uzyskać więcej informacji, przeczytaj dokumentację Django na temat Konkat

Mam nadzieję, że komuś się to przyda. Pozdrawiam



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak skopiować tabelę w MySQL

  2. AttributeError:moduł „mysql” nie ma atrybutu „łącznik”

  3. Jak wybrać pierwszy wiersz dla każdej grupy w MySQL?

  4. Jak zaprojektować hierarchiczny system kontroli dostępu oparty na rolach?

  5. WYBIERZ wiele do wielu tabel w jednym zapytaniu