Ho alcuni problemi di serializzazione con django. Ho tre modelli, diciamo una scuola, una stanza e una scrivania (nome fittizio per esempio). Ogni scuola dispone di più stanze e ogni camera dispone di più desk.Django.rest_framework: come serializzare da uno a molti a molti?
Le classi e le loro relazioni simile a questa:
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)
Voglio essere in grado di serializzare un elenco di scuola, ciascuna contenente direttamente tutti i banchi all'interno.
L'armadio ho ottenuto è stato scrivendo nel mio serialize.py tre serializzatore:
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,)
che restituiscono un elenco di scuole che contiene un elenco di stanza che contiene un elenco di scrivania, quando voglio una lista di scuola contenente un elenco di desk
Quale origine dovrei utilizzare nel serializzatore School per restituire direttamente la scrivania? Qualcosa come source = 'room_set.desk_set'? O forse usando una funzione transform_?
PS: il codice è scrivere da zero il post, si prega di ignorare gli eventuali errori di sintassi
È possibile farlo in una query con: desks = Desk.objects.filter (room__school = self) –