Skip to content

Djangoでウェブアプリを作る(7) – モデルの作成

前回の記事:
Djangoでウェブアプリを作る(6)

今回参照する公式チュートリアル:
https://docs.djangoproject.com/ja/3.2/intro/tutorial02

さて、今回は「モデル」というものを作るらしい。

スポンサードリンク

基本はコピー&ペーストで

えー、何々・・

これから開発する簡単な poll アプリケーションでは、Question と Choice の2つのモデルを作成します。Poll には question と publication date の情報があります。 Choice には選択肢のテキストと vote という2つのフィールドがあります。各 Choice は1つの Question に関連づけられています・・・

・・・何を言ってるんだ。この文章は? とりあえず、polls/models.py を開いてみよう。

from django.db import models
# Create your models here.

空だな・・ チュートリアルでは、QuestionクラスとChoiceクラスをここで定義しているようだ。そのままコピー&ペースト。

polls/models.py

from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

何となくイメージがつかめてくる

冒頭の説明文に戻ってみよう。

・・・Poll には question と publication date の情報があります。

つまり、Pollアプリケーションには、question(質問文)とpublication(正解)に関するデータが必要ということか? 

・・ああ、何となくイメージがつかめてきた。多分、後からユーザーが質問文と正解を登録していく形だな。Questionクラスは、その形を定義するためのクラス・・ということでいいのだろうか?

だったら、answerでいいような気もするが・・・publicationは、直訳すると「出版」だ。

・・・ Choice には選択肢のテキストと vote という2つのフィールドがあります。

Choiceクラスには、choice_textフィールドがある。多分、複数の回答例を表示して、ユーザーに選択させる感じか・・・

それからvotesフィールドだが、voteとは、直訳で「投票」だから、A~Dのどれに投票するか・・みたいなことをさせようとしているのだろうか?

公式のチュートリアルが分かりにくいのは、何を作ろうとしているのか分からないからだろう。最初に完成品を見た方が理解が早いかもしれない。

・・各 Choice は1つの Question に関連づけられています。

Choiceクラスには、questionフィールドがあり、Questionクラスと関連付けされる・・ ああ、questionフィールドに何か代入されているな。

question = models.ForeignKey(Question, on_delete=models.CASCADE)

「各Choiceは・・」ということだから、Choiceクラスは、インスタンスとして複製されるということ・・だろうか?

大丈夫か? これで・・

この記事をシェア

Comments are closed, but trackbacks and pingbacks are open.