Tôi đã có một vấn đề tương tự; về cơ bản, tôi muốn nối hai trường để có được tên đầy đủ của người dùng. Tôi đã giải quyết vấn đề theo cách này (nhưng phải nói rằng tôi đang sử dụng 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()))
ở đâu, F('...')
đánh giá đối số của nó dưới dạng truy vấn, vì vậy bạn có thể truy vấn một trường của chính mô hình hoặc trải dài trên các mô hình như bạn làm trong filter / get, trong khi Value('...')
đánh giá đối số của nó theo nghĩa đen (trong trường hợp của tôi, tôi cần một khoảng trắng được đặt ở giữa first_name
và last_name
) và output_field=...
chỉ định Loại của trường được chú thích (Tôi muốn trở thành CharField
) .Để biết thêm thông tin, bạn có thể đọc tài liệu của Django về Concat
Hy vọng nó sẽ hữu ích cho ai đó ngoài kia. Chúc mừng