【问题标题】:How passing string on filter keyword to Django Objects Model?如何将过滤关键字上的字符串传递给 Django 对象模型?
【发布时间】:2011-11-04 23:38:48
【问题描述】:

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

我有:

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_stringMyModel

编辑:我找到了this SO question - 我会测试并报告。

【问题讨论】:

    标签: django string django-models filter keyword


    【解决方案1】:

    你可以这样做:

    my_filter = {}
    my_filter[my_keyword] = my_filter_value
    
    my_object = MyModel.objects.filter(**my_filter)
    

    例如,您的变量可能是:

    my_keyword = 'price__gte'
    my_filter_value = 10
    

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

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

    【讨论】:

    • 最后一行应该是:my_object = MyModel.objects.filter(**my_filter)
    • 和关键字过滤器一样,如何使用变量代替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)?
    • 嘿,如果 my_keyword =my_filter_values 整个内容存储在字符串变量中,那么如何在过滤器中使用它呢?
    猜你喜欢
    • 1970-01-01
    • 2019-11-16
    • 2020-02-17
    • 2013-10-21
    • 2017-12-14
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    相关资源
    最近更新 更多