通过具有搜索字段的搜索查询过滤 table 在字典中
filter the table by a search query with search fields is in a dictionary
我有一个字典和一个字符串值,例如:
d= {"check-in": "12-04-2016", "check-out": "13-04-2016", "location": "India"}
value = 'india'
search = d['check-in']
在这里,我正在读取作为我的数据库中的列名的键 table。
注意:这里的一切都是动态的,这意味着列的值是动态设置的。
我想在 django 中使用多个过滤器进行查询,这样我将获得字典 (d) 设置的所有详细信息。这意味着我想按多个列值进行过滤。
我写的查询:
modelInstance.objects.filter(search = value).
这里出现错误。
如果有人不明白请告诉我会解释更多
这里我将列名存储在一个字符串中,例如:
field = "check-in"
循环 for 循环以获取所有列名
错误:
FieldError: Cannot resolve keyword 'field' into field
您可以使用 **
(unpacking argument) 将字典扩展为关键字参数。
在此之前,您需要将查询键转换为字段名称,例如 check-in
转换为 check_in_date
(假设实际字段名称在 check_in_date
中)
query_to_field_mapping = {
'check-in': 'check_in_date',
'check-out': 'check_out_date',
'location': 'location',
}
d = {"check-in": "12-04-2016", "check-out": "13-04-2016", "location": "India"}
query = {query_to_field_mapping[key]: value for key, value in d.items()}
objects = Model.objects.filter(**query)
试试这个
from django.db.models import Q
value = 'india'
search = 'check-in'
filter = {
'check-in': Q(model_check-in__eq=value),
'check-out': Q(model_check-out__eq=value),
'location': Q(model_location__eq=value)
}
return Model.objects.filter(filter[search])
您可以在过滤器中使用字典。
d= {"check-in": "12-04-2016", "check-out": "13-04-2016", "location": "India"}
modelInstance.objects.filter(**d)
我有一个字典和一个字符串值,例如:
d= {"check-in": "12-04-2016", "check-out": "13-04-2016", "location": "India"}
value = 'india'
search = d['check-in']
在这里,我正在读取作为我的数据库中的列名的键 table。
注意:这里的一切都是动态的,这意味着列的值是动态设置的。
我想在 django 中使用多个过滤器进行查询,这样我将获得字典 (d) 设置的所有详细信息。这意味着我想按多个列值进行过滤。
我写的查询:
modelInstance.objects.filter(search = value).
这里出现错误。
如果有人不明白请告诉我会解释更多
这里我将列名存储在一个字符串中,例如:
field = "check-in"
循环 for 循环以获取所有列名
错误:
FieldError: Cannot resolve keyword 'field' into field
您可以使用 **
(unpacking argument) 将字典扩展为关键字参数。
在此之前,您需要将查询键转换为字段名称,例如 check-in
转换为 check_in_date
(假设实际字段名称在 check_in_date
中)
query_to_field_mapping = {
'check-in': 'check_in_date',
'check-out': 'check_out_date',
'location': 'location',
}
d = {"check-in": "12-04-2016", "check-out": "13-04-2016", "location": "India"}
query = {query_to_field_mapping[key]: value for key, value in d.items()}
objects = Model.objects.filter(**query)
试试这个
from django.db.models import Q
value = 'india'
search = 'check-in'
filter = {
'check-in': Q(model_check-in__eq=value),
'check-out': Q(model_check-out__eq=value),
'location': Q(model_location__eq=value)
}
return Model.objects.filter(filter[search])
您可以在过滤器中使用字典。
d= {"check-in": "12-04-2016", "check-out": "13-04-2016", "location": "India"}
modelInstance.objects.filter(**d)