2017-09-05 6 views
0

今後のプロセスについて助けを求めたいと思います。私は、ユーザーが独自のdjangoリクエストを作成し、結果を得ることができるようにしたいと思います。ユーザー基準Djangoリクエスト

今まで、私は私のスクリプトでDjangoのリクエストを作成しますが、静的な要求があります

request1 = Test.objects.all()

または

query_lastname_ID = request.GET.get('q1ID') 
    query_firstname_ID = request.GET.get('q1bisID') 
    query_naissance_ID = request.GET.get('q1terID') 

    if query_firstname_ID and query_lastname_ID and query_naissance_ID : 

     query_ID_list = Individu.objects.filter(
               Nom__icontains=query_lastname_ID, 
               Prenom__icontains=query_firstname_ID, 
               VilleNaissance__icontains=query_naissance_ID) 
     if len(query_ID_list) != 0 : 
      messages.success(request, 'Miracle .. Vous avez un résultat !') 
     else : 
      messages.error(request, "Oh non .. Vous n'avez aucun résultat !") 

これらの要求はすべて静的です。

ここでは、条件または数学演算子の間でユーザーに選択を許可したいと思います。

私は私のリクエストでテーブルのフィールドを書き込みませんが、ユーザーは自分が欲しいものを得るための選択肢を持つことができます:

  • つのフィールド
  • 二つのフィールド
  • Xフィールド
  • 数学演算子(=、>、<、not egal、...)
  • フィールド間の比較
  • ...

動的リクエストにより、ユーザーは結果を得ることができます。彼はDjangoのリクエストを作成することができます。

可能ですか?私はこのような処理についての例やドキュメンテーションを見つけることができません:/

答えて

1

あなたは、たとえば、辞書のようにフィルタを作成してみてくださいすることができます

map_fields_get = { 
    'Nom': 'q1ID', 'Prenom': 'q1bisID', 'VilleNaissance': 'q1terID' 
} 
condition_param = 'YOUR_GET_NAME_FOR_CONDITION' 
condition_list = ['icontains', 'iexact', 'gt', 'lt'] 
condition = request.GET.get('condition_param', 'icontains') 
if condition not in condition_list: 
    # add your logic set default or raise 
    condition = condition_list[0] 
qs_f = {} 
for get_f, f in map_fields_get.items(): 
    get_val = request.GET.get(get_f, None) 
    if get_val: 
     qs_f_key = '%s__%s' % (f, condition) 
     qs_f[qs_f_key] = get_val 

if qs_f: 
    query_ID_list = Individu.objects.filter(**qs_f) 
+0

私は注意スクリプトを読み込む必要がありWouaw。初めて私はこのようなことをしようとしています! – Deadpool