Объект 'django model' не является подписываемым

Я получаю эту ошибку, когда пытаюсь выполнить набор запросов на модели Django

'AppUser' object is not subscriptable

несмотря на то, что он нормально работает в операторе print, ошибка появляется только когда я помещаю его в оператор IF

вот мой код :

    def to_representation(self, instance):
        data = super().to_representation(instance)
        print("reached here") #print normaly
        print(AppUser.objects.filter(mobile=instance['mobile']).count() > 0) #print normally (False)
        if AppUser.objects.filter(mobile=instance['mobile']).count() > 0: # Raises an Exception
            if instance.playerprofile_set.all().count() > 0:
                player_profile = instance.playerprofile_set.all()[0]
                data['player_profile'] = PlayerProfileSerializer(
                  player_profile).data
                for item in Team.objects.all():
                    if player_profile in item.players.all():
                        data['team'] = TeamSerializer(item).data
                    if item.cap.id == player_profile.id:
                        data['team'] = TeamSerializer(item).data
                    # data["team"] = instance.
        return data

попробуйте это:

 def to_representation(self, instance):
            data = super().to_representation(instance)
            print("reached here") #print normaly
            print(AppUser.objects.filter(mobile=instance['mobile']).count() > 0) #print normally (False)
            if AppUser:
              AppUser.objects.filter(mobile=instance['mobile']).count() > 0
              if instance.playerprofile_set.all().count() > 0:
                    player_profile = instance.playerprofile_set.all()[0]
                    data['player_profile'] = PlayerProfileSerializer(
                      player_profile).data
                    for item in Team.objects.all():
                        if player_profile in item.players.all():
                            data['team'] = TeamSerializer(item).data
                        if item.cap.id == player_profile.id:
                            data['team'] = TeamSerializer(item).data
                        # data["team"] = instance.
            return data

Вместо count используйте exists():

if AppUser.objects.filter(mobile=instance['mobile']).exists():
   if instance.playerprofile_set.exists():
            player_profile = instance.playerprofile_set.first()

Потому что он очень эффективен в отличие от count() и выполняет очень маленький запрос.

<
Вернуться на верх