実現したいこと
- 投稿者のみにデータを表示するようにしたい。
前提
初めての質問で回答していただくための情報が不足しているかもしれませんが、ご容赦ください。
Djangoを用いてwebページを作成しています。現状、投稿された全てのデータが、全ユーザーに表示されてしまっています。
htmlファイルでfor文とif文を使い、全ての投稿データのうち、現在ログイン中のユーザーと投稿したユーザーが一致した場合にのみ表示するように試みています。
該当のソースコード
card_list.html
1{% extends 'base.html' %} 2 3{% block h1 %}暗記カード一覧{% endblock %} 4 5{% block content %} 6 7{% for item in object_list %} 8 {% if user.get_username == item.author %} 9 <div class="p-4 m-4 bg-light botder border-success rounded"> 10 <h5 class="text-success">問題:{{ item.question }}</h5> 11 <h6>答え:{{ item.answer }}</h6> 12 <h6>カテゴリ:{{ item.category }}</h6> 13 <h6>作成者:{{ item.author }}</h6> 14 <h6>現在のユーザー:{{ user.username }}</h6> 15 <div class="mt-3"> 16 <a href="{% url 'detail-card' item.pk %}">詳細へ</a> 17 </div> 18 </div> 19 {% endif %} 20 {% endfor %} 21{% endblock content%}
models.py
1from django.db import models 2from django.utils import timezone 3from django.contrib.auth import get_user_model 4 5import datetime 6 7CATEGORY = (('study', '勉強'),(('programming', 'プログラミング')),('other', 'その他')) 8 9class Card(models.Model): 10 created_at = models.DateTimeField('登録日時', auto_now_add=True) 11 updated_at = models.DateTimeField('更新日時', auto_now=True) 12 review = models.IntegerField('復習回数',default = 0) 13 review_count = models.IntegerField('やり直し回数',default = 0) 14 question = models.TextField('問題',default='問題') 15 answer_fake1 = models.CharField('選択肢1',max_length=100,default='選択肢1') 16 answer_fake2 = models.CharField('選択肢2',max_length=100,default='選択肢2') 17 answer = models.CharField('回答',max_length=100,default='回答') 18 # user = models.ForeignKey('auth.User', on_delete=models.CASCADE) 19 author = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,) 20 category = models.CharField( 21 max_length=100, 22 choices = CATEGORY 23 ) 24 def __str__(self): 25 return self.question
views.py
1from django.shortcuts import render, redirect 2from django.views.generic import ListView, CreateView, DeleteView, UpdateView, DetailView 3from django.core.exceptions import PermissionDenied 4from .models import Card 5from django.urls import reverse_lazy, reverse 6from django.contrib.auth.mixins import LoginRequiredMixin 7from django.contrib.auth.models import User 8 9~~~省略~~~ 10 11class ListCardView(LoginRequiredMixin, ListView): 12 template_name = 'card/card_list.html' 13 model = Card 14 15~~~省略~~~
試したこと
card_list.htmlのif文がうまくかければ動作すると思うのですが、方法がよくわかりません。

0 コメント