したがって、データベースのクエリに使用される単一の入力フィールドを持つ超基本的なフォームを作成したいと考えています。
私のモデル ( models.py
) は次のとおりです。
from django.db import models
class Book(models.Model):
uid = models.IntegerField(primary_key=True)
title = models.CharField(max_length=30)
class Meta:
db_table = u'books'
forms.py
:
from django import forms
from myapp.models import Book
class EnterIDForm(forms.form):
book_id = forms.CharField()
# add a custom clean function to validate that the user input
# is a valid book ID
def clean_book_id(self):
try:
book_id = int(self.cleaned_data["book_id"])
except:
book_id = None
if book_id and Book.objects.filter(uid=book_id).count():
return book_id
else:
raise forms.ValidationError("Please enter a valid book ID number.")
views.py
:
from django.shortcuts import render_to_response
from myapp.models import Book
def form_view(request):
if request.method == "POST":
# the user has submitted the form, see if we have a book
book_id_form = EnterIDForm(request.POST) # instantiate our form class with the user data
if book_id_form.is_valid():
# if our form is valid, then we have a book_id that works:
the_book = Book.objects.get(uid=book_id_form.cleaned_data["book_id"])
return render_to_response("book_template.html", { "the_book": the_book }, context_instance=RequestContext(request))
# if the form wasn't valid, it will fall through to the other return statement.
else:
# If the user didn't submit a form, instantiate a blank one.
book_id_form = EnterIDForm()
return render_to_response("form_template.html", { "book_id_form": book_id_form }, context_instance=RequestContext(request))
入力フィールドでユーザーから「uid」を収集し、uid がデータベース内の本である Book モデル インスタンスからすべてのデータを表示する必要があります。
フォームがビューや後のテンプレートとどのように結び付けられているかは理解していますが、それを機能させることができないようです。
Django のサイトや他の多くのリソースで、学ぶことができる例を無限に検索しましたが、何も見つかりませんでした。
誰か手伝ってくれませんか?
ありがとう。