我有以下對象繼承模型。class Room: name = models.CharField(db_index=True, unique=True, max_length=255) status = models.CharField(default=RoomStatus.ACTIVE, max_length=256, null=True) members = models.ManyToManyField(User) last_activity = models.DateTimeField(default=timezone.now)繼承的模型是,class LeagueRoom(Room): league = models.ForeignKey(League, on_delete=models.CASCADE, null=True) location = models.ForeignKey(Location, on_delete=models.CASCADE, null=True) logo_url = models.CharField(max_length=1024, null=True)和class ClubRoom(Room): club = models.ForeignKey(Club, on_delete=models.CASCADE, null=True) location = models.ForeignKey(Location, on_delete=models.CASCADE, null=True) logo_url = models.CharField(max_length=1024, null=True)各自的序列化程序如下,class RoomSerializer(serializers.ModelSerializer): members = UserSerializer(read_only=True, many=True) class Meta: model = Room fields = ('id', 'name', 'status', 'members', 'created', 'modified', 'last_active')和class LeagueRoomSerializer(serializers.ModelSerializer): location = LocationSerializer(read_only=True) league = LeagueSerializer(read_only=True) room = RoomSerializer(read_only=True) class Meta: model = LeagueRoom fields = ('id', 'name', 'location', 'status', 'league', 'logo_url', 'room', 'created', 'modified',)和class ClubRoomSerializer(serializers.ModelSerializer): location = LocationSerializer(read_only=True) club = ClubSerializer(read_only=True) room = RoomSerializer(read_only=True) class Meta: model = ClubRoom fields = ('id', 'name', 'location', 'club', 'logo_url', 'status', 'room', 'created', 'modified',)我的問題是我已通過以下方式為用戶獲取了所有房間。rooms = user.room_set.order_by('-last_activity')現在我想根據房間類型序列化這些數據。因此,不是使用RoomSerializerI want 遍歷房間列表,如果房間是 ClubRoom,則使用ClubRoomSerializeror else LeagueRoomSerializer。我不確定如何從父對象確定子對象。有人可以幫我弄這個嗎。
添加回答
舉報
0/150
提交
取消