質問編集履歴
6
削除
title
CHANGED
File without changes
|
body
CHANGED
@@ -29,21 +29,4 @@
|
|
29
29
|
|
30
30
|
<追伸> 上記関数は機能に問題ありです。
|
31
31
|
Djangoのfilterは変数名(name_icontainsのように)で検索条件を操作していますが、関数化するためには、変数名を動的に生成する必要があります。
|
32
|
-
exec関数で、動的な変数実装を行おうとすると、うまく機能してくれません。(上のコードではQオブジェクトの内容がNoneになります。)
|
32
|
+
exec関数で、動的な変数実装を行おうとすると、うまく機能してくれません。(上のコードではQオブジェクトの内容がNoneになります。)
|
33
|
-
以下のソースのように引数で管理しようとしても、変数名がname_icontains などではなく、search_conditionとして扱われてしまうようです。
|
34
|
-
|
35
|
-
```ここに言語を入力
|
36
|
-
def and_search(model, search_conditions_list, search_values_list):
|
37
|
-
filter_factor = []
|
38
|
-
|
39
|
-
i = 0
|
40
|
-
for search_condition in search_conditions_list:
|
41
|
-
if len(search_values_list[i]) != 0:
|
42
|
-
search_value = search_values_list[i]
|
43
|
-
filter_factor.append(Q(search_condition = search_value))
|
44
|
-
print(filter_factor)
|
45
|
-
i += 1
|
46
|
-
|
47
|
-
return model.objects.select_related().filter(*filter_factor)
|
48
|
-
```
|
49
|
-
> and_search(Clients, ['name__icontains', 'neme_kana__icontains'], ['あいうえお','アイウエオ'])
|
5
ほそく
title
CHANGED
File without changes
|
body
CHANGED
@@ -31,6 +31,7 @@
|
|
31
31
|
Djangoのfilterは変数名(name_icontainsのように)で検索条件を操作していますが、関数化するためには、変数名を動的に生成する必要があります。
|
32
32
|
exec関数で、動的な変数実装を行おうとすると、うまく機能してくれません。(上のコードではQオブジェクトの内容がNoneになります。)
|
33
33
|
以下のソースのように引数で管理しようとしても、変数名がname_icontains などではなく、search_conditionとして扱われてしまうようです。
|
34
|
+
|
34
35
|
```ここに言語を入力
|
35
36
|
def and_search(model, search_conditions_list, search_values_list):
|
36
37
|
filter_factor = []
|
@@ -44,4 +45,5 @@
|
|
44
45
|
i += 1
|
45
46
|
|
46
47
|
return model.objects.select_related().filter(*filter_factor)
|
47
|
-
```
|
48
|
+
```
|
49
|
+
> and_search(Clients, ['name__icontains', 'neme_kana__icontains'], ['あいうえお','アイウエオ'])
|
4
わかりやすい表現に
title
CHANGED
File without changes
|
body
CHANGED
@@ -28,9 +28,9 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
<追伸> 上記関数は機能に問題ありです。
|
31
|
-
Djangoのfilterは変数名で検索条件を操作していますが
|
31
|
+
Djangoのfilterは変数名(name_icontainsのように)で検索条件を操作していますが、関数化するためには、変数名を動的に生成する必要があります。
|
32
32
|
exec関数で、動的な変数実装を行おうとすると、うまく機能してくれません。(上のコードではQオブジェクトの内容がNoneになります。)
|
33
|
-
|
33
|
+
以下のソースのように引数で管理しようとしても、変数名がname_icontains などではなく、search_conditionとして扱われてしまうようです。
|
34
34
|
```ここに言語を入力
|
35
35
|
def and_search(model, search_conditions_list, search_values_list):
|
36
36
|
filter_factor = []
|
3
軽微改修
title
CHANGED
File without changes
|
body
CHANGED
@@ -27,7 +27,7 @@
|
|
27
27
|
|
28
28
|
|
29
29
|
|
30
|
-
|
30
|
+
<追伸> 上記関数は機能に問題ありです。
|
31
31
|
Djangoのfilterは変数名で検索条件を操作していますが(name__icontains)、関数化するためには、変数名を動的に生成する必要があります。
|
32
32
|
exec関数で、動的な変数実装を行おうとすると、うまく機能してくれません。(上のコードではQオブジェクトの内容がNoneになります。)
|
33
33
|
同様に引数で管理しようとしても、変数名がname__icontains などではなく、search_conditionとして扱われるようです。
|
2
情報の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -23,4 +23,25 @@
|
|
23
23
|
return model.objects.select_related().filter(☆ここでfilter_factorリストにあるQオブジェクトをあるだけANDしたい)
|
24
24
|
```
|
25
25
|
and_search関数の実行イメージは以下です。
|
26
|
-
> and_search(Model, ['name','name_kana'], ['icontains', 'icontains'], ['あいうえお','アイウエオ'])
|
26
|
+
> and_search(Model, ['name','name_kana'], ['icontains', 'icontains'], ['あいうえお','アイウエオ'])
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
!PS 上記関数は機能に問題ありです。
|
31
|
+
Djangoのfilterは変数名で検索条件を操作していますが(name__icontains)、関数化するためには、変数名を動的に生成する必要があります。
|
32
|
+
exec関数で、動的な変数実装を行おうとすると、うまく機能してくれません。(上のコードではQオブジェクトの内容がNoneになります。)
|
33
|
+
同様に引数で管理しようとしても、変数名がname__icontains などではなく、search_conditionとして扱われるようです。
|
34
|
+
```ここに言語を入力
|
35
|
+
def and_search(model, search_conditions_list, search_values_list):
|
36
|
+
filter_factor = []
|
37
|
+
|
38
|
+
i = 0
|
39
|
+
for search_condition in search_conditions_list:
|
40
|
+
if len(search_values_list[i]) != 0:
|
41
|
+
search_value = search_values_list[i]
|
42
|
+
filter_factor.append(Q(search_condition = search_value))
|
43
|
+
print(filter_factor)
|
44
|
+
i += 1
|
45
|
+
|
46
|
+
return model.objects.select_related().filter(*filter_factor)
|
47
|
+
```
|
1
不要削除
title
CHANGED
File without changes
|
body
CHANGED
@@ -18,7 +18,6 @@
|
|
18
18
|
search_value = search_values_list[i]
|
19
19
|
search_condition = search_conditions_list[i]
|
20
20
|
filter_factor.append(Q(exec("{} = '{}'".format(field + '__' + search_condition, search_value))))
|
21
|
-
print(filter_factor)
|
22
21
|
i += 1
|
23
22
|
|
24
23
|
return model.objects.select_related().filter(☆ここでfilter_factorリストにあるQオブジェクトをあるだけANDしたい)
|