質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Q&A

解決済

1回答

2306閲覧

【Django】modelでBooleanFieldを定義し、templateでチェックボックスを表示したい。

apiros

総合スコア20

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

0グッド

0クリップ

投稿2019/04/09 04:22

前提・実現したいこと

Todoリストを作成中です。

Todoリストのタスクが、<終了or未終了>を判別する機能をつけたく、
models.pyにBooleanFieldを追加しました。

forms.pyを作成せず、
templateのtask_list.htlmでチェックボタンを表示させたいのですが、
<True/False>という文字の表示になってしまいます。
どうすれば、チェックボックスが表示されますでしょうか?

ご回答願います。

発生している問題・エラーメッセージ

チェックボックスを表示したいのに、
<True/False>という文字表示になってしまう。

該当のソースコード

<models.py>
from django.db import models
from django.urls import reverse

class Task(models.Model):
message = models.CharField(max_length=100)
completed = models.BooleanField(default=False)

def __str__(self): return self.message def get_absolute_url(self): return reverse('todo:index')

<todo/templates/todo/task_list.html>

<h1>*今日やること*</h1> <table class='table table-striped table-hover'> {% for task in object_list %} <tr> <td> **<form action='' method='post'>{% csrf_token %} {{ task.completed }} </form>** </td> <td> {{ task.message }} <a href='{% url "todo:update" task.pk %}' class='btn btn-outline-primary float-right'>編集</a> <form action='{% url "todo:delete" task.pk %}' method='post' class='d-inline'>{% csrf_token %} <button class='btn btn-outline-secondary float-right'>削除</button> </form> </td> </tr> {% endfor %} </table> <div class='pb-3'> <a href='{% url "todo:create" %}' class='btn btn-outline-primary'>新しいタスク</a> </div> <iframe class='embed-responsive-item border border-warning' id='weathermap' src='https://api.openweathermap.org/data/2.5/weather?q=Kobe&mode=html&appid=df691d3eb3927b60d8e97c3ce81f2f16' height='320' frameborder='10'> </iframe> {% endblock %}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

listviewはリストのデータを表示させること目的にしているテンプレートですので、リストビューでチェックボックスを扱うのは難しいかと思います。

英語ですが、、、todoリストを作っているサイトがありました。
https://medium.com/fbdevclagos/how-to-build-a-todo-app-with-django-17afdc4a8f8c

function based viewを使って、チェックボックスにチェックが入っているデータがあった場合に対象とするデータを削除するという実装にしているようです。
この実装をするためにはfunction based viewでデータを取ってくる方法(Model.objects.all)や、request.POSTの使い方などを理解していないといけないので、結構レベル高いかもしれません。。

投稿2019/04/10 00:55

ryotax

総合スコア142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

apiros

2019/04/13 07:09

ryotax様 ご回答ありがとうございます。 listviewがデータの表示を目的にしているテンプレートと知りませんでした。 決まりが色々とあるのですね...学習して理解できるようになりたいと思いますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問