Почему 'ImproperlyConfigured ' по префиксу id в fields= ('userid',) сериализатора django, а не в fields='__all__'?

При следующем коде я получаю ошибку 'ImproperlyConfigured', а с некомментированной строкой и не получаю. Почему?

class EigenBankRekeningSerializer(serializers.ModelSerializer):

    class Meta:
        model = EigenBankRekening
        fields = (
            'id'
            'userid',
            'aangemaakt',
            'gewijzigd',
            'naam',
            'informatie',
            'iban_prefix',
            'bankrekening',
            'valuta',
            'eigen_gbr',
            'zakelijke_rekening',
            'oudedagsreserve',
        )
        # fields = '__all__'

Значение исключения: Имя поля iduser недействительно для модели EigenBankRekening.

В views.py у меня есть фильтр по userid, но почему в API он имеет префикс id?

class EigenBankRekeningView(viewsets.ModelViewSet):
    permission_classes = [AllowAny]
    serializer_class = EigenBankRekeningSerializer
    queryset = EigenBankRekening.objects.all()

    def get_queryset(self, **kwargs):
        user_bank = EigenBankRekening.objects.filter(userid=self.request.user.id)
        return user_bank

Потому что вы забыли добавить запятую после поля id. Python считает, что id и userid - это одна строка, и конкатенирует оба значения. Для исправления просто добавьте запятую после id:

class EigenBankRekeningSerializer(serializers.ModelSerializer):

    class Meta:
        model = EigenBankRekening
        fields = (
            'id', # here
            'userid',
            'aangemaakt',
            'gewijzigd',
            'naam',
            'informatie',
            'iban_prefix',
            'bankrekening',
            'valuta',
            'eigen_gbr',
            'zakelijke_rekening',
            'oudedagsreserve',
        )

Чтобы воспроизвести ошибку, вы можете попробовать следующее:

print(
    'id'
    'user'
) # output >'iduser'
Вернуться на верх