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

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

ただいまの
回答率

90.75%

  • Python 3.x

    5308questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Django

    906questions

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

  • SQLite

    579questions

    SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python + Django でテーブルの削除機能の追加について

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 465

mizko

score 11

http://qiita.com/Gen6/items/b9a5fae4dc71fc2bc449

を参考にToーdoリストを作ってみました。
終了したtodoの削除機能を追加したいのですが、うまく行かずご教授願いたいです。

現状はadminページからの削除、ターミナルからの削除はできます。

理想は「to-do表示ページ(index.html)から削除ボタンを押すとそのデータを削除」です。
ボタンの設置などはできますが、どこをどう書き加えればいいのかわかりません。
よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

ターミナルで削除できるということは

objects.filter(...).delete()


などは理解しているということでよろしいでしょうか?

平たく言うとそれをviews.pyのindex.htmlを表示しているを表示している関数で実行すれば削除できます。

ただし、Webページのユーザが選んだ項目を消すというのは結構難しくぐっと難易度があがります。

フォームなどでユーザにどのToDoを消すか選択してもらいそれを反映するという作業が

views.pyの中で必要になります。

まずDjangoにおけるForm classを勉強するとよいかと思います。

この辺を参考にしてみてください。

https://docs.djangoproject.com/ja/1.11/topics/forms/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/21 22:40 編集

    view.pyに
    *******
    def delete(request):
    delete_ids = request.POST.getlist('delete_ids')
    if delete_ids:
    Message.objects.filter(id__in=delete_ids).delete()
    return redirect('crud:index')
    ******

    url.pyに
    ******
    urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^$', views.delete, name='delete'), 
    ]
    *****

    to_do.htmlに
    *****
    <input type="checkbox" name="delete_ids" value="{{ posting.id }}">
    {% csrf_token %}

    *****

    index.htmlに
    *****
    <form action="{% url 'myapp:delete' %}" method="post">
    {% include "to_do.html" %}
    <input type="submit" value="del">

    </form>

    と書き加えたましたが動きません;;

    キャンセル

  • 2017/09/22 04:32

    url.pyのindex, deleteのURLは別にしてください。
    deleteの方をurl(r'^delete$', views.delete, name='delete')
    とかにすればよいかなと思います。

    index.htmlの書き方はDjango的には一般的ではないのですが、
    これでも動きそうですね。とりあえず上の変更でいかがでしょうか?

    キャンセル

  • 2017/09/22 13:54

    現在はチェックボックスにマークし削除すると
    ValueError at /delete

    invalid literal for int() with base 10: ''
    というエラーが出ます。正しくIDが取得できてないのでしょうか

    キャンセル

  • 2017/09/22 14:13

    あ、治りました

    キャンセル

  • 2017/09/22 18:13

    よかったです。
    現在、最新のバージョンで日本語で詳しく解説している本がない状態なので
    教えた公式ドキュメントを読んで勉強するのが良いと思います。

    キャンセル

0

ありがとうございました。
勉強しやすいサイトまでお教えいただき大変参考になりました。
色々変更加えてなんとかやりたかった動きができるようになりました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    androidのゲーム開発、html記述について困ってます。

    androidのゲーム開発について困っています。現在、60MB以上のゲームを開発しており、グーグルプレイの仕様によって、APKファイルをどうにかして、60MB以内にして公開しなけれ

  • 解決済

    Openldapサーバをdebianで構築する際のSSH鍵認証設定方法について

    Openldapにてディレクトリサービスを構築中です。 サーバ、クライアント共にDebian(7or8)で構築中なのですが、 SSHログインの際、公開鍵認証にしてその鍵情報をLDA

  • 解決済

    シリアル値を変換

    Excelで渡ってきたシリアル値をjavascriptでdate型に変換して比較をしたいのですがどうして良いかわからず困っています。 ご教授いただければ幸いです。

  • 受付中

    xcode spritkitでのエラーについて

    現在spritkitでゲームを作っているのですが 登場キャラクターをシュミュレーターで動かしてみようと思ったときに、"consecutive declarations on a 

  • 解決済

    xcode 背景色

    xcodeの行番号の背景色とフォントカラーを変える方法を教えてください!

  • 受付中

    Multiplier Connectivityで認証スキップ

    MultipeerConnectivityフレームワークを使う時、デバイスの認証(invite)のアラートを出さない、それか、一度認証したデバイスとはすぐに繋がるようにすることはで

  • 解決済

    warning: could not load any Objective-C class info...

    AlamofireImageというライブラリを使っていたのですが、 少しチェックしていなかったら画像が読み込まれなくなってしまいました。 UIImageViewは問題なく表示さ

  • 解決済

    ローカル通知でユーザーがDatePickerで指定した日時に通知を行いたい

    前提・実現したいこと iOSアプリ開発で予定表アプリ(オフラインアプリ)を作っているのですが、ユーザーがDatepickerを使用して日時を指定し、指定した日時になったら通知が来

同じタグがついた質問を見る

  • Python 3.x

    5308questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Django

    906questions

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

  • SQLite

    579questions

    SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。