Почему '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'