【问题标题】:Calling filter with a variable for field name使用字段名称的变量调用过滤器
【发布时间】:2012-02-25 16:31:10
【问题描述】:

有没有办法在其中一个字段名是变量的查询集上调用过滤器?

例如我有类似的东西:

models.py

class Playlist(models.Model):
    video = ...

views.py

field_name = 'video'
Playlist.objects.filter(field_name=v)

这当然会导致field_name 不是可以过滤Playlist 的属性的错误。

【问题讨论】:

  • 普通,我要上网点!

标签: django django-models django-queryset


【解决方案1】:

将字段名称字符串与icontains 一起使用。

试试这个

field_name = 'video'
field_name_icontains = field_name + '__icontains'
Playlist.objects.filter(**{field_name_icontains: v})

【讨论】:

  • 有没有办法在查询集中将模型名称作为变量传递?例如。在像var_duty_cond = DutyHdr.objects.get(duty_hdr_component = varMainDutyType).duty_main 这样的查询集中,我如何传递变量varDutyHdr 来代替model DutyHdr
【解决方案2】:

Playlist.objects.filter(**{field_name: v})

【讨论】:

  • 如何将 __icontains 与 field_name 一起使用?它给出了一个错误
  • 试试: field_name = 'video__icontains' ,它对我有用
猜你喜欢
  • 1970-01-01
  • 2019-10-22
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
相关资源
最近更新 更多