Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bisakah saya menggunakan objek Django F() dengan rangkaian string?

Saya memiliki masalah serupa; pada dasarnya saya ingin menggabungkan dua bidang untuk mendapatkan nama lengkap pengguna. Saya menyelesaikannya dengan cara ini (tetapi harus dikatakan bahwa saya menggunakan 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()))

dimana, F('...') mengevaluasi argumennya sebagai kueri, sehingga Anda dapat menanyakan bidang model itu sendiri, atau menjangkau seluruh model seperti yang akan Anda lakukan di filter/get, sementara Value('...') mengevaluasi argumennya secara harfiah (dalam kasus saya, saya membutuhkan ruang untuk ditempatkan di antara first_name dan last_name ), dan output_field=... menentukan Jenis bidang beranotasi (saya ingin menjadi CharField ).Untuk info lebih lanjut, Anda dapat membaca Django docs tentang Concat

Semoga bermanfaat bagi seseorang di luar sana. Semangat



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Operator logika MySQL

  2. Kesalahan Kueri Mysql - TAMBAHKAN Koin Otomatis

  3. Memasukkan karakter acak ke Database MYSQL

  4. #1055 - Ekspresi daftar SELECT tidak ada dalam klausa GROUP BY dan berisi kolom yang tidak diagregasi, ini tidak kompatibel dengan sql_mode=only_full_group_by

  5. Kapan harus menutup kursor menggunakan MySQLdb