【发布时间】:2017-02-20 13:27:16
【问题描述】:
我正在尝试添加一些功能,让用户能够通过 URL 获取参数在 Django 中过滤分页查询集,并且已成功运行:
for f in self.request.GET.getlist('f'):
try:
k,v = f.split(':', 1)
queryset = queryset.filter(**{k:v})
except:
pass
但是,我希望以不使用 try/except 块的方式这样做。 django 中是否有标准方法来检查字符串是否为有效的过滤器参数?
例如:
my_str = "bad_string_not_in_database"
if some_queryset.is_valid_filter_string(my_str):
some_queryset.filter(**{my_str:100})
【问题讨论】:
-
如果我理解正确,您可以从链接中找到信息:docs.djangoproject.com/en/1.10/topics/db/managers
-
我不想向自定义管理器添加额外的命令,我想知道这种方式是否已经存在。
-
如果它是“第一”级过滤器,则可能在您的模型上具有属性。
-
这实际上几乎是重复的。这是一个做if来找出模型字段是否存在或做一个try except的问题。这些是实现这一目标的唯一可能方法。所以问题归结为什么更好
-
我注意到您正在使用
:字符拆分字段。不要那样做,它是 RFC 1738 保留字符,在 URL 中具有特殊含义。请改用,或|。
标签: python django django-queryset django-orm