Python

DjangoのListViewについて

ListViewについてまとめておきます。

ListViewは登録した項目を一覧表示するためのViewの機能です。

model.pyの中身

まずはdjangoのmodel.pyから内容確認してみます。

#アプリ内のmodel.py
from django.db import models
CATEGORY = (('Estimate','見積'),('Basic','基本'),('Urgently','急ぎ'))
class ABCModel(models.Model):

title = models.CharField(
verbose_name='タイトル', # フィールドのタイトル
max_length=20)

create_at = models.DateTimeField(
verbose_name='受付日',
blank = True,
null = True
)
category = models.CharField(
max_length=100,
choices = CATEGORY
)

def __str__(self):

return self.title

モデル名を「ABCModel」と任意の名前で作成しています。

さらにtitle,create_at,categoryの3つのフィールドを作成しています。

フィールドの作り方は、

class ABCModel(models.Model):

というクラスを定義し、その下に「好きな名前のフィールド名 = models.[A]」をつければ簡単に作れます。[A]に当てはまるものがいくつかありますので下の例を参考にしてみてください。

フィールドの定義例

※[A]に当てはめればよいです。

例1:CAREGORYで決められた項目から選択する場合

CharField(
      max_length=100,
      choices = CATEGORY
)

例2:好きな文字を入れる場合

CharField(
verbose_name='タイトル',
max_length=20
)

例3:日付と時間を記入する場合

DateTimeField(
        verbose_name='受付日'
)

例4:イメージファイルを保存する場合

ImageField(
        verbose_name='イメージ1',  # フィールドのタイトル
        upload_to='foldername'  # settingsで決めたMEDIA_ROOT以下のディレクトリ名foldernameにファイルを保存
)

例5:テキストを記入する場合(文字制限なし)

TextField(
          verbose_name='コメント',  # フィールドのタイトル
)

「def __str__(self):」は特殊メゾッドと呼ばれ、オブジェクトの文字列を返す役割があります。「return self.title 」 はデータの中身を(self.***)の***で指定したフィールドの文字列でオブジェクトを表現することになります。今回の例ではtitleで指定した値を参照することになります。

補足ですが、以下のオプションは必ず[A]の中に含めておくことをおススメします。

null = True, # Ture:項目に何も入力値がなくてもNullでエラーを返さない。
blank=True,  # Ture:記載がなくても登録できる。

Viewの中身

views.pyの中身を以下のコードにしておけば、models.pyで定義したABCModelと紐づけがデキます。

from django.views.generic import ListView
# model.pyで定義したclassをインポートする
from .models import ABCModel

class JobListView(ListView):
#template_nameは決まった変数値
    template_name = 'job_list.html'
#ここでmodelと紐付けを行う(あらかじめ上でimportしておく)
    model = JobModel
ABOUT ME
den
完全独学でWEBデザインを無謀にも挑戦している中年男。 工場勤務の会社員で3児の父。 チャレンジを忘れず、妻に怒られても心はおれず。 有益な情報を発信し、これを見ている人の為になればと思っています。
関連記事一覧