[英]Using **kwargs, a dictionary from views was not successfully pass to a function in models properly
我正在尝试将视图中的字典传递给模型中的 function,并使用 **kwargs 进一步操纵我想要在 function 中执行的操作。 我尝试在将字典传递给 function 之前调用它。 数据在那里。 将 dict 传递给 function (isAvailable) 的那一刻,kwargs 是空的。
以下是 views.py 中的代码片段。
def bookingAvailable(request):
available = isAvailable(data=request.data)
以下是来自 models.py 的代码片段
def isAvailable(**kwargs):
bookedDate = kwargs.get('bookedDate')
customerID = kwargs.get('customerID')
cpID = kwargs.get('cpID')
request.data 以字典形式填充数据。 但是当它进入 **kwargs 的那一刻,一切都消失了。 不太清楚中间会发生什么。 任何帮助表示赞赏!
当您执行isAvailable(data=request.data)
时,将为kwargs
分配一个看起来像
{
"data": ...
}
请注意,没有键"bookedDate"
或"customerID"
,因为您在调用中明确指定了data=...
我假设bookedData
和customerID
是request.data
中的键。 要将这些键作为关键字 arguments 传递,请使用**
运算符:
isAvailable(**request.data)
除了此更改之外,您还可以显式声明参数:
def isAvaialble(bookedDate, customerId, cpId):
pass
请注意,这比为每个参数调用kwargs.get()
少了多少代码。
您应该从 kwargs 获取第一个数据字典,然后从数据字典中获取字段:
def isAvailable(**kwargs):
data = kwargs.get('data')
bookedDate = data.get('bookedDate')
customerID = data.get('customerID')
cpID = data.get('cpID')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.