使用**kwargs时views层字典无法正确传递至models层函数问题
问题根源
你调用isAvailable时传入的是data=request.data,形参**kwargs只会将其解析为一个键为data、值为整个request.data字典的键值对,因此你直接从kwargs中读取bookedDate等字段必然返回空。
解决方案
方案1:修改传参逻辑,将字典展开为关键字参数
调整views.py中的调用写法,用**把request.data的键值对直接展开传入函数:
def bookingAvailable(request): available = isAvailable(**request.data)
该方案无需修改models.py中原有的函数逻辑,即可直接从kwargs中读取到对应字段。
方案2:修改函数取值逻辑,保留现有传参方式
如果要维持data=request.data的传参写法,调整models.py中函数的取值逻辑即可:
def isAvailable(**kwargs): # 先取出传入的data字典 data = kwargs.get('data', {}) # 再从data字典中读取对应字段 bookedDate = data.get('bookedDate') customerID = data.get('customerID') cpID = data.get('cpID')
注意事项
如果选择方案1,需确保request.data中的键名和你要读取的字段名完全一致,无拼写或大小写差异。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

