为何Django序列化器指定fields时出现ImproperlyConfigured错误?
问题解答
1. 序列化器指定字段触发ImproperlyConfigured错误的原因
你在fields元组里的'id'后面漏掉了逗号,Python会自动将相邻的字符串字面量拼接在一起,把'id'和下一行的'userid'合并成了非法的字段名(对应异常里的iduser是拼接后的结果),而模型EigenBankRekening中根本不存在这个字段,因此抛出配置错误。
只需给'id'后面补上逗号即可修复:
fields = ( 'id', # 补上这个逗号 'userid', 'aangemaakt', 'gewijzigd', 'naam', 'informatie', 'iban_prefix', 'bankrekening', 'valuta', 'eigen_gbr', 'zakelijke_rekening', 'oudedagsreserve', )
而fields='__all__'会自动加载模型的所有合法字段,不会出现手动指定字段时的语法失误,因此能正常运行。
2. API中出现带id前缀字段的原因
API里出现的带id前缀的字段就是模型默认生成的id主键字段——Django模型会自动创建id作为主键,无论你用fields='__all__'还是手动指定字段列表(只要包含id),它都会被序列化返回。
你在视图中用userid过滤数据,和返回id字段没有冲突:id是银行账户记录自身的主键,userid是关联的用户ID,二者是独立字段,都会出现在API响应里。
内容的提问来源于stack exchange,提问作者ML Rozendale
相关产品推荐
相关产品推荐

