使用字段名称的变量调用过滤器

9-b*_*its 24 django django-models django-queryset

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

例如,我有类似的东西:

models.py

class Playlist(models.Model):
    video = ...
Run Code Online (Sandbox Code Playgroud)

views.py

field_name = 'video'
Playlist.objects.filter(field_name=v)
Run Code Online (Sandbox Code Playgroud)

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

nis*_*isc 50

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

  • 尝试使用: field_name = 'video__icontains' ,它对我有用 (2认同)

sha*_*fik 10

将字段名称字符串与icontains.

尝试这个

field_name = 'video'
field_name_icontains = field_name + '__icontains'
Playlist.objects.filter(**{field_name_icontains: v})
Run Code Online (Sandbox Code Playgroud)