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