2

私はこのクエリを持っています:

search = request.GET['q']
Entries = Entry.objects.filter(Q(field1__icontains=search), Q(field2__icontains=search), Q(field3__icontains=search))

これをよりきれいにするエレガントな方法はありますか?(私は何かを一般的なものにすることを意味しQ(var_field__icontains=search)var_fieldこれらの値 field1、field2、field3 のいずれかである要求された投稿から取得されます)。

4

1 に答える 1

0

それで、これはあなたのために働いていますか?

search = request.GET['q']
fieldnames = ('field1', 'field2', 'field3')

filters = reduce(operator.and_, 
    (Q(**{'{}__icontains'.format(fieldname): search}) 
     for fieldname in fieldnames))

Entries = Entry.objects.filter(filters)
于 2013-07-03T14:08:49.370 に答える