Tôi có một số khó khăn khi serializing với django. Tôi có ba mô hình, giả sử Trường học, Phòng và Bàn làm việc (ví dụ như tên giả). Mỗi trường có nhiều phòng và mỗi phòng có nhiều bàn.Django.rest_framework: Làm thế nào để serialize một đến nhiều cho nhiều?
Các lớp và các mối quan hệ của họ giống như thế này:
class School(models.Model):
name = models.CharField()
class Room(models.Model):
name = models.CharField()
school_id = models.ForeignKey(School)
class Desk(models.Model):
row = models.IntegerField()
col = models.IntegerField()
room_id = models.ForeignKey(Room)
Tôi muốn để có thể serialize một danh sách các trường, mỗi chứa trực tiếp tất cả các bàn bên trong.
Các tủ quần áo tôi nhận được bằng cách viết trong serialize.py tôi ba serializer:
class DeskSerializer(serializers.ModelSerializer):
class Meta:
field = (row, col,)
class RoomSerializer(serializers.ModelSerializer):
desks = DeskSerializer(source='desk_set', many=True)
class Meta:
field = (desks,)
class SchoolSerializer(serializers.ModelSerializer):
rooms = RoomSerializer(source='room_set', many=True)
class Meta:
field = (name, rooms,)
nào trả về một danh sách các trường có chứa một danh sách các phòng chứa danh sách các bàn làm việc, khi tôi muốn có một danh sách các trường có chứa danh sách bàn
Tôi nên sử dụng nguồn nào trong bộ nối tiếp của trường để quay lại trực tiếp bàn làm việc? Cái gì đó như source = 'room_set.desk_set'? Hoặc có thể bằng cách sử dụng hàm transform_?
PS: mã là viết từ đầu vào bưu điện, xin vui lòng bỏ qua những lỗi cú pháp có thể
Bạn có thể làm điều đó trong một truy vấn với: desk = Desk.objects.filter (room__school = self) –