0

私はDjangoを使ってフィルタリングを行っています。フィルタリングは、ドロップダウンメニューおよびテキスト入力から選択された選択に基づいて行われます。フィルタリングは正常に動作しています。今私は、検索が見つからない場合は、メッセージを表示したい。誰かが私にこれを解決するのを助けることができますか?ここに自分のコードを投稿します。フラグがtrueに設定されていない場合やあるnewDataがnullの場合、あなたが何かを見つけることができないとき、どのように表示に関するメッセージ検索が見つからないときにメッセージを表示する

def filter(request): 
    val3='' 
    if request.GET.has_key('choices'): 
     val2=request.GET.get('choices') 
    if request.GET.has_key('textField'): 
     val3=request.GET.get('textField') 
    if request.POST: 
     val2=request.POST.get('choices')  
     val3=request.POST.get('textField') 
    if val2=='Designation':     
     newData = EmployeeDetails.objects.filter(designation=val3) 
     flag=True 
    elif val2=='Name': 
     newData = EmployeeDetails.objects.filter(userName__icontains=val3) 
     flag=True 
    elif val2=='EmployeeID': 
     newData = EmployeeDetails.objects.filter(employeeID=val3) 
     flag=True  
    elif val2=='Project': 
     newData = EmployeeDetails.objects.filter(project=val3) 
     flag=True 
    elif val2=='DateOfJoin': 
     newData = EmployeeDetails.objects.filter(dateOfJoin=val3) 
     flag=True  
    else: 
     return HttpResponseRedirect('/employeeList/') 

HTML

<h4 align="left"> 
{%for data in newData%} 
<a STYLE="text-decoration:none" href ="http://10.1.0.90:8080/singleEmployee/{{data.id}}?choices={{val2}}&textField={{val3}}&flag=1 "> 
{{ data.userName}}<br> 
{%endfor%} 
</h4> 

答えて

2

フィルタビューまたはHTML ...のチェックNEWDATAその空のショーであれば、あなたのMSG

例:

{% if newData %} 
    newData 
{% else %} 
    error 
{% endif %} 
  • ものは、あなたがチェックしたい何かが空であるのですか?
+0

は私にこのエラーを与えます。TemplateSyntaxError at/filter/ if式の最後に未使用です。 –

+0

新しいコードを参照してください;) – Efazati

+0

固定:)おかげで多くのEfazati :) –

1

?あなたはそれがフラグをチェックする必要がありますかどうかを確認したい場合があります

{% if flag is None or flag == False or newData is None %} 
    <span>Error Message</span> 
{% endif %} 

もnullである...それが必要な場合は、あなたの投稿コードから伝えることはできません。

HTH

+0

私はこの方法をやろうと、このエラーを得ました。 TemplateSyntaxError at/filter/ '!flag' from '!flag' –

+0

編集を参照してください... –

+0

私はそれを解決しました...ありがとうたくさんのkesun .. :) –

1

get/post変数に名前を付ける方法をちょっと「賢い」方が良い場合は、ビューコードを最小限に抑えることができます。

def filter(request): 
    fieldname = request.GET.get('choices', None) or request.POST.get('choices') 
    value = request.GET.get('textField', None) or request.POST.get('textField') 

    if fieldname is None or value is None: 
     return HttpResponseRedirect('/employeeList/') 

    new_data = EmployeeDetails.objects.filter(**{fieldname:value}) 
    # use new_data for your purposes here, without the flag 

ただし、選択肢のGET変数またはPOST変数名が、モデルのフィールド名と完全に一致する(大文字小文字を含む)ことを確認する必要があります。あなたのテンプレートで次に

<h4 align="left"> 
{%for data in new_data %} 
    <a STYLE="text-decoration:none" href ="http://10.1.0.90:8080/singleEmployee/{{data.id}}?choices={{val2}}&textField= {{val3}}&flag=1 "> 
    {{ data.userName}}<br> 
{%endfor%} 
{% if new_data is None %} 
    <div class='error'> No Data </div> 
{% endif %} 
</h4> 
関連する問題