cuốn sách gpt4 ai đã làm

Django: Chuyển đổi Bộ truy vấn với các đối tượng liên quan sang JSON

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 15:18:50 25 4
mua khóa gpt4 Nike

Giả sử tôi có hai mô hình đơn giản:

Địa điểm lớp học (models.Model):
tên = models.CharField(max_length=200)
địa chỉ = models.CharField(max_length=200)

Sự kiện lớp (models.Model):
tên = models.CharField(max_length=200)
ngày = mô hình.DateField()
địa điểm = models.ForeignKey(Địa điểm)

Điều tôi muốn làm bây giờ là truy vấn một tập hợp sự kiện với các vị trí được phân tích cú pháp và chuyển đổi mọi thứ thành danh sách từ điển mà sau này tôi có thể chuyển đổi sang JSON.

Kết quả cuối cùng sẽ trông như thế này:

[{
"tên": "sự kiện1",
"ngày": "ngày 1",
"địa điểm": {
"tên": "địa điểm1",
"địa chỉ": "địa chỉ1",
},
},{
"tên": "sự kiện2",
"ngày": "ngày2",
"địa điểm": {
"tên": "địa điểm2",
"địa chỉ": "địa chỉ2",
},
},]

Cho đến nay tôi đã sử dụng Bộ truy vấn giá trị.values() Cách thử vận ​​may:

Event.objects.all().select_similar("place").values()

Nhưng điều này sẽ không hiệu quả vì .values() Chỉ ID của đối tượng liên quan được trả về thay vì nội dung. Vì vậy, tôi tự hỏi liệu có cách tích hợp nào khác để thực hiện chuyển đổi này hay không hoặc liệu tôi có phải lặp lại đối tượng QuerySet và tự mình thực hiện chuyển đổi hay không.

câu trả lời hay nhất

Không có cách mặc định nào để tạo từ điển lồng nhau mà bạn muốn nhưng bạn có thể chọn giá trị của các mục liên quan:

# Không cần chọn_liên quan trong trường hợp này
Event.objects.values('name', 'date', 'place__name', 'place__address')

[{
"tên": "sự kiện1",
"ngày": "ngày 1",
"place__name": "địa điểm1",
"place__address": "địa chỉ1",
},{
"tên": "sự kiện2",
"ngày": "ngày2",
"place__name": "place2",
"place__address": "address2",
}]

Nếu thực sự cần thiết, bạn có thể thực hiện một số xử lý hậu kỳ bằng Python để có được từ điển lồng nhau mà bạn muốn.

Về python - Django: Chuyển đổi QuerySet với các đối tượng liên quan sang JSON, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/18146905/

25 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress