0

Web インターフェイスを介して検索されるSampleモデルがあり、条件に一致する Sample オブジェクトの QuerySet が期待どおりに返されます。

モデル

class Sample(models.Model):
   sample_name = models.CharField('Sample', max_length=16)

htmlフォーム

<form name="sample_search_form" method="GET" action="{% url 'search' %}">
     <input  id="sample_search_box" type="text" name="sample_search_box"  placeholder="Search samples..." >
      <button id="sample_search_submit" type="submit" >Submit</button>
</form> 

ビュー

def search(request):
   if request.GET:
      search_term = request.GET['sample_search_box']
      results = Sample.objects.filter(sample_name__icontains=search_term)                                  
      return render_to_response('samples/sample_search_list.html', {'results': results}) 
   return render_to_response('samples/sample_search_list.html', {'results': results, 'search': results}) 

また、追加の目的でモデルの主キーを返したいと思います。

以下のバリエーションを試しました。

      results = Sample.objects.filter(sample_name__icontains=search_term).get(sample_name_id=pk)      

しかし、次のようなエラーが表示されます。 name 'pk' is not defined

フィルタリング方法を記述どおりに保護し、主キーの値も取得するにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

0

フィールドにアクセスする方法と同様に、アクセスできるフィールドsample_nameもありpkます。

Python コードの場合:

for sample in results:
    print(sample.pk)

または、テンプレート コードで次のようにします。

{% for result in results %}
    {{ result.pk }}
{% endfor %}

の実際のデータベース列名はpk異なる場合がありますが (通常はid)、Django は常にpkショートカットを使用できるようにします。

于 2018-11-07T23:19:30.683 に答える