Home > database >  why 'ImproperlyConfigured ' by an id prefix in django serializer's fields= ('use
why 'ImproperlyConfigured ' by an id prefix in django serializer's fields= ('use

Time:10-02

At the following code I get the 'ImproperlyConfigured' error, while with the uncommented line and won't. Why?

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__'

Exception Value: Field name iduser is not valid for model EigenBankRekening.

In views.py I've got a filter by userid, but why is it prefixed with id in the API?

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

CodePudding user response:

Because you forgot to add comma after id field. Python assumes that id and userid is one string and concatenates both values. To fix just add comma after 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',
        )

To reproduce the error you can try following:

print(
    'id'
    'user'
) # output >'iduser'
  • Related