我有一本字典&一个字符串值,如:
d= {"check-in": "12-04-2016", "check-out": "13-04-2016", "location": "India"}
value = 'india'
search = d['check-in']
这里我正在读取数据库表中列名的键。
注意:这里所有内容都是动态的,这意味着列的值是动态设置的。
我想在django中使用多个过滤器进行查询,这样我将获得由字典(d)设置的所有细节。这意味着我想按多个列值进行过滤。
查询我写道:
modelInstance.objects.filter(search = value).
我在这里得到错误。
如果有人不明白,请告诉我解释更多
这里我将列名存储在如下字符串中:
field = "check-in"
循环for循环以获取所有列名
错误:
FieldError: Cannot resolve keyword 'field' into field
答案 0 :(得分:0)
您可以使用**
(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)
答案 1 :(得分:0)
试试这个
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])
答案 2 :(得分:0)
您可以在过滤器中使用字典。
void out_characters(unsigned char *p, int n)
{
if (n)
{
unsigned char *end = p+n;
while(p < end)
out_byte(*p++);
}
}