如何解决在django.db.models.Q搜索字符串中同时包含字符串和整数时,发生ValueError
我有以下函数,应带有3个参数(标题,描述或product_id)。前两个是字符串,第三个是整数。
File "C:\Users\sivan\AppData\Local\Temp\pip-install-dz1zm4zn\pygame\buildconfig\download_win_prebuilt.py",line 302,in ask
reply = raw_input(
EOFError: EOF when reading a line
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
上面的函数抛出错误:
# Create the necessary search function for assignment
def search(request): # Get all products below where title,desc or product ID is in the query
query = request.GET.get('query')
products = Product.objects.filter(Q(title__icontains=query) | Q(description__icontains=query) | Q(product_id=query))
context = {
'query': query,'products': products
}
搜索栏将仅接受整数值。是否可以在Q对象中包含同时使用字符串或整数的选项?我是MySQL Synatax的新手。
解决方法
product_id
仅对整数有意义。因此,您无法为此查询字符串。
您可以检查它是否为数字序列,然后将其转换为整数:
def search(request):
query = request.GET.get('query')
qs = Q(title__icontains=query) | Q(description__icontains=query)
if query.isdigit():
qs |= Q(product_id=query)
products = Product.objects.filter(qs)
context = {
'query': query,'products': products
}
# …