特定のレコードの取得 - Django

特定の ID のレコードのみ取り出す

データベース・テーブル情報

データベース名
sample
テーブル名
hello_user
カラムの説明
カラム名 データ型 説明
id bigint(20) AUTO_INCREMENT ,PRIMARY KEY
name varchar(20)

pythonApp\env\django_app\hello\forms.py

from django import forms

class HelloForm(forms.Form):
  id = forms.IntegerField(label='ID')

pythonApp\env\django_app\hello\templates\hello\index.html

{% load static %}
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <h1>hello/index</h1>
  <table>
    <form action="{% url 'hello:index' %}" method="post">
      {% csrf_token %}
      {{ forms.as_table }}
      <tr>
        <td></td>
        <td><input type="submit" value="click"></td>
      </tr>
    </form>
  </table>
  <table>
    <tr>
      <th>ID</th>
      <th>NAME</th>
    </tr>
    {% for item in data %}
    <tr>
      <td>{{item.id}}</td>
      <td>{{item.name}}</td>
    </tr>
    {% endfor %}
  </table>
</body>
</html>

pythonApp\env\django_app\hello\urls.py

from django.urls import path
from . import views

app_name = 'hello'

urlpatterns = [
  path('', views.index, name='index'),
]

pythonApp\env\django_app\hello\models.py

from django.db import models

# Create your models here.

class User(models.Model):
  name = models.CharField(max_length=20)

  def __str__(self):
    return str(self.id) + ":" + self.name 

pythonApp\env\django_app\hello\views.py

from django.shortcuts import render
from django.http import HttpResponse
from .models import User
from .forms import HelloForm

# Create your views here.
def index(request):
  params = {
    'form': HelloForm(),
    'data': [],
  }

  if(request.method == 'POST'):
    num = request.POST['id']
    item = User.objects.get(id=num)
    params['data'] = [item]
    params['form'] = HelloForm(request.POST)
  else:
    params['data'] = User.objects.all()

  return render(request, 'hello/index.html', params)