我有以下对象继承模型。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
提交
取消