前提・実現したいこと
Djangoの管理サイトから作った日記のタイトルと本文の20文字を読み取ってmypageに表示したい
発生している問題・エラーメッセージ
エラーは何も起こっておらず、テーブルにもしっかり値が入力されているのですがマイページに日記がありませんと表示されてしまう。
mypage.html
{% extends 'base.html' %} {% load static %} {% block title %}マイページ % endblock %} {% block active_mypage %}active{% endblock %} {% block head %} <link href="{% static 'css/clean-blog.min.css' %}" rel="stylesheet"> {% endblock %} {% block contents %} <div class="container"> <div class="row"> <div class="my-div-style w-100"> <div class="col-lg-8 col-md-10 mx-auto"> {% for home in mypage %} <div class="post-preview"> <a href="#"> <h2 class="post-title"> {{ home.title }} </h2> <h3 class="post-subtitle"> {{ home.content|truncatechars:20 }} </h3> </a> <p class="post-meta">{{ home.created_at }}</p> </div> <hr> {% empty %} <p>日記がありません。</p> {% endfor %} </div> </div> </div> </div> {% endblock %}
###model.py
from accounts.models import CustomUser from django.db import models class home(models.Model): """日記モデル""" user = models.ForeignKey(CustomUser, verbose_name='ユーザー', on_delete=models.PROTECT) title = models.CharField(verbose_name='タイトル', max_length=40) content = models.TextField(verbose_name='本文', blank=True, null=True) photo1 = models.ImageField(verbose_name='写真1', blank=True, null=True) photo2 = models.ImageField(verbose_name='写真2', blank=True, null=True) photo3 = models.ImageField(verbose_name='写真3', blank=True, null=True) created_at = models.DateTimeField(verbose_name='作成日時', auto_now_add=True) updated_at = models.DateTimeField(verbose_name='更新日時', auto_now=True) class Meta: verbose_name_plural = 'home' def __str__(self): return self.title
###urls.py
from django.urls import path from . import views app_name = 'home' urlpatterns = [ path('', views.IndexView.as_view(), name="index"), path('inquiry/', views.InquiryView.as_view(), name="inquiry"), path('mypage/', views.MypageView.as_view(), name="mypage"), ]
###view.py
class MypageView(LoginRequiredMixin, generic.ListView): model = home template_name = 'mypage.html' def get_queryset(self): diaries = home.objects.filter(user=self.request.user).order_by('-created_at') return diaries
試したこと
mypage.htmlの{% for home in mypage %}のhomeをhome_mypageなどに変えてみたが表示は変わらなかった。
makemigrationsとmigrateはエラーなく実行することができた
補足情報(FW/ツールのバージョンなど)
DBのテーブルにはしっかりとデータが入っている
python manage.py dbshell
=# \dt
リレーション一覧
スキーマ | 名前 | 型 | 所有者
----------+--------------------------------------+----------+----------
public | account_emailaddress | テーブル | postgres
public | account_emailconfirmation | テーブル | postgres
public | accounts_customuser | テーブル | postgres
public | accounts_customuser_groups | テーブル | postgres
public | accounts_customuser_user_permissions | テーブル | postgres
public | auth_group | テーブル | postgres
public | auth_group_permissions | テーブル | postgres
public | auth_permission | テーブル | postgres
public | django_admin_log | テーブル | postgres
public | django_content_type | テーブル | postgres
public | django_migrations | テーブル | postgres
public | django_session | テーブル | postgres
public | django_site | テーブル | postgres
public | home_home | テーブル | postgres
=# select * from home_home;
id | title | content | photo1 | photo2 | photo3 | created_at | updated_at | user_id ----+--------+------------------+---------------------------------------------------------------------+--------+--------+-------------------------------+-------------------------------+--------- 1 | 最高 | お宝が二十個ある | The_Go_Programming_Language_-_Google_Chrome_2020_09_16_16_56_11.png | | | 2020-09-23 02:05:23.710549+09 | 2020-09-23 02:39:19.290746+09 | 1 2 | あふぁ | ;;; | | | | 2020-09-23 02:48:20.100619+09 | 2020-09-23 02:48:20.100619+09 | 1 (2 行)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/23 12:45