【问题标题】:Django Model Object Automatic FilteringDjango 模型对象自动过滤
【发布时间】:2020-07-02 16:59:27
【问题描述】:

我正在处理一个 Django 项目,我想做这样的命令: Student.objects.all().filter(name__iexact="Some name")

这样可以更好,更好,可塑,例如:

someFunction(Student.objects.all(): QuerySet,'name__iexact',"Some name") -> QuerySet

或:

Student.objects.all().some_advanced_filter(key='name__iexact',value='Some name') -> QuerySet

谢谢!

【问题讨论】:

  • 我并不完全清楚您在这里的目标是什么。
  • 我添加了注释以便更清楚地说明,我在这里的目标是尝试搜索表而不必在方法参数中写入特定键,而是将其作为字符串或其他东西传递。

标签: python django django-models filtering


【解决方案1】:

可以通过构造Q对象进行过滤,例如:

from django.db.models import Q

Student.objects.filter(Q(('name__iexact', 'some_name')))

所以你可以用:some_function

from django.db.models import Q

def some_function(qs, key, value):
    return qs.filter(Q((key, value)))

这实质上就是当您调用.filter(..) 时会发生的情况。实际上,它将获得*args (Q-objects) 和**kwargs,并将它们包装在新的Q 对象中,然后将其转换为连词 Q 对象。

【讨论】:

    猜你喜欢
    • 2013-03-16
    • 1970-01-01
    • 2014-08-22
    • 2021-01-26
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    相关资源
    最近更新 更多