Skip to content

Instantly share code, notes, and snippets.

@fhdez
Created July 20, 2018 15:45
Show Gist options
  • Save fhdez/92ef61257bd7892d1271c3eeed126431 to your computer and use it in GitHub Desktop.
Save fhdez/92ef61257bd7892d1271c3eeed126431 to your computer and use it in GitHub Desktop.
class MessageReadSerializer(ModelSerializer):
users_receivers = serializers.SerializerMethodField()
class Meta:
model = ReceiverMessage
fields = ['id', 'users_receivers', 'was_read']
def get_users_receivers(self, instance):
children = instance.user
group_id = instance.group_id
groups = []
if children:
return UsersReadSerializer(instance.user).data
elif group_id:
for children_group in UserGroup.objects.filter(group=group_id, user__role__name='Student'):
groups.append(UsersReadSerializer(children_group.user).data)
return groups
@fierroformo
Copy link

Así fatima.

class MessageReadSerializer(ModelSerializer):
    send_to = serializers.SerializerMethodField()
    users_receivers = serializers.SerializerMethodField()

    class Meta:
        model = ReceiverMessage
        fields = ['id', 'users_receivers', 'send_to', 'was_read']

    def get_send_to(self, instance):
        if instance.user:
            return 'user'

        return 'group'

    def get_users_receivers(self, instance):
        if instance.user:
            users = User.objects.filter(pk=instance.user.id)
            return UsersReadSerializer(users, many=True).data
        elif instance.group:
            users_id = []
            for user_group in UserGroup.objects.filter(
                group=instance.group.id, user__role__name='Student'
            ):
                users_id.append(user_group.user.id)

            users = User.objects.filter(id__in=users_id)

            return UsersReadSerializer(users, many=True).data

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment