如何将字符串作为筛选关键字传递给Django对象模型?

15

我该如何在视图中传递变量到关键字对象筛选器?

我有:

my_object = MyModel.objects.filter(my_keyword =my_filter_values)

我想从一个来自字符串的变量中获取my_keyword,就像这样:

my_string = 'my_keyword'
my_object = MyModel.objects.filter(my_string=my_filter_values)

但是这并不起作用,因为Django不知道my_string来自MyModel

编辑:我已经找到了这个SO问题 - 我将测试并报告结果。

1个回答

37

您可以像这样做:

my_filter = {}
my_filter[my_keyword] = my_filter_value

my_object = MyModel.objects.filter(**my_filter)

例如,您的变量可能是:

my_keyword = 'price__gte'
my_filter_value = 10

这将导致获取所有价格大于或等于10的对象。如果您想在多个字段上进行查询,只需在my_filter[my_keyword]下面添加另一行即可:

my_filter[my_keyword] = my_filter_value
my_filter[my_other_keyword] = my_other_filter_value

7
我的对象 = MyModel.objects.filter(**my_filter) - Ferguzz
就像关键字过滤器一样,如何在model的位置使用变量?例如,在SO查询中,可以使用字符串var_model代替my_object = MyModel.objects.filter(my_keyword =my_filter_values),并且使用my_object = var_model.objects.filter(my_keyword =my_filter_values) - Love Putin Not War
1
嘿,如果 my_keyword = my_filter_values 整个内容都存储在一个字符串变量中,那么如何在过滤器中使用它? - Rika Das

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接