如何将filter关键字上的字符串传递给Django Objects Model?

lau*_*ent 7 string django filter django-models keyword

如何在视图上的关键字对象过滤器上传递变量?

我有:

my_object = MyModel.objects.filter(my_keyword =my_filter_values)
Run Code Online (Sandbox Code Playgroud)

我想从一个来自字符串的变量中获取my_keyword,如下所示:

my_string = 'my_keyword'
my_object = MyModel.objects.filter(my_string=my_filter_values)
Run Code Online (Sandbox Code Playgroud)

但是,这并不工作,因为Django不知道my_stringMyModel.

编辑:我发现了这个问题 - 我会测试并报告.

Sam*_*ing 20

你可以这样做:

my_filter = {}
my_filter[my_keyword] = my_filter_value

my_object = MyModel.objects.filter(**my_filter)
Run Code Online (Sandbox Code Playgroud)

例如,您的变量可能是:

my_keyword = 'price__gte'
my_filter_value = 10
Run Code Online (Sandbox Code Playgroud)

这将导致获得所有对象price >= 10.如果您想查询多个字段,可以在下面添加另一行my_filter[my_keyword]:

my_filter[my_keyword] = my_filter_value
my_filter[my_other_keyword] = my_other_filter_value
Run Code Online (Sandbox Code Playgroud)

  • 最后一行应为:`my_object = MyModel.objects.filter(**my_filter) (7认同)