django 如何在查询过滤器中使用变量
django how to use variable in query filter
我正在尝试创建一个 Django 过滤器,使用变量作为 jsonfield 上包含查询的过滤器输入。我就是无法让它工作。形成我正在寻找的解决方案应该使用 kwargs 但我不知道如何实现它。
lookupValue = "[{{\"displayName\":\"{0}\"}}]".format(user['name'])
print("value is: ")
print(lookupValue)
recent_user_calls = CallRecord.objects.filter(participants__contains = [{"displayName":"Some Name"}])
#recent_user_calls = CallRecord.objects.filter(participants__contains = lookupValue)
我创建了我要搜索的值并将其放入查找值中。在最后注释掉的行中,我尝试在 de query 中使用这个值。这不像上一行完美工作的地方那样工作。在我打印 lookupvalue 之前的几行,它与完全键入的版本 100% 相同。我已经盯着这个看了 2 天了。有人可以给我指出正确的方向吗?
问题是您在查询中传递的变量是字符串而不是列表。
你可以这样写:
recent_user_calls = CallRecord.objects.filter(participants__contains = [{"displayName":user['name']}])
或者您可以直接使用键过滤:
recent_user_calls = CallRecord.objects.filter(participants__displayName=user['name'])
我正在尝试创建一个 Django 过滤器,使用变量作为 jsonfield 上包含查询的过滤器输入。我就是无法让它工作。形成我正在寻找的解决方案应该使用 kwargs 但我不知道如何实现它。
lookupValue = "[{{\"displayName\":\"{0}\"}}]".format(user['name'])
print("value is: ")
print(lookupValue)
recent_user_calls = CallRecord.objects.filter(participants__contains = [{"displayName":"Some Name"}])
#recent_user_calls = CallRecord.objects.filter(participants__contains = lookupValue)
我创建了我要搜索的值并将其放入查找值中。在最后注释掉的行中,我尝试在 de query 中使用这个值。这不像上一行完美工作的地方那样工作。在我打印 lookupvalue 之前的几行,它与完全键入的版本 100% 相同。我已经盯着这个看了 2 天了。有人可以给我指出正确的方向吗?
问题是您在查询中传递的变量是字符串而不是列表。
你可以这样写:
recent_user_calls = CallRecord.objects.filter(participants__contains = [{"displayName":user['name']}])
或者您可以直接使用键过滤:
recent_user_calls = CallRecord.objects.filter(participants__displayName=user['name'])