0

私はおそらく3週間しっかりとRTFMを行ってきましたが、これを行う方法がわかりません. もし私がこれに慣れたら、Django for Dummies の本を書くことを約束します。ドキュメントは理解できません!

データベース内の各メモのタイトルを表示するインデックス ページを備えた簡単なメモ取りアプリがあります。リストの各項目にチェックボックスを付けて、1 つまたは複数のメモを選択してから削除ボタンを押して、「Are you sure you want to delete... "x, y and z" notes?」にリダイレクトできるようにしたいだけです。ページ、確認または拒否。次に、索引リストに戻ります。管理アプリと同じです。

各オブジェクトのタイトルとそのチェックボックスが個々のフォームを構成する必要があるため、テーブルにレイアウトされたモデルフォームセットが必要であると推測しました。

私は多くのアプローチを試みました。最新はこんな感じ。現状ではエラーは発生していません (forms.py 関数でウィジェット属性を設定していましたが、それは気に入らなかったため、何かが表示されるかどうかを確認するためだけに取り出しました)。全て。また、 select_note_function はおそらくクラスにする必要があると思います。私が見つけることができるすべてのドキュメントは、CharFields と文字列入力を説明しています。データベースを制御するウィジェットを取得する方法の完全な例が 1 つも見つかりません。

フォーム.py:

from django import forms
from django.forms.models import modelformset_factory
from django.forms.widgets import CheckboxInput
from models import Note

def select_note_formset():
    SelectNote = modelformset_factory(Note)
    Form = modelformset_factory(
        Note,
        form=SelectNote,
        fields='title',

)

models.py:

def selection_index(request):
form = select_note_formset()
if request.method == 'POST':
    formset = form(request.POST)
    if formsest.is_valid():
        pass

else:
    formset=form
return render_to_response('select_index.html', {'formset':formset})

テンプレート:

<form method="post" action="">
  {{ formset.management_form }}
  <table>
    {% for form in formset %}
    {{ form }}
    {% endfor %}
  </table>
</form>

私が知っている限りでは、私は完全に間違った木を吠えている可能性があります. 誰かがこれを綴ることができれば、私はそれをとても感謝しています!

4

1 に答える 1

1

これには要点があります。先週、自分で考え出したところです。

https://gist.github.com/bjb/5717314

簡単に言えば、モデル ID の非表示の入力を含み、完全なモデルに対して検証するモデルの新しいフィールド タイプを作成し、それをフォームに入れ、これらのフォームのフォームセットを作成します。

私自身の解決策の検索では、CheckboxSelectMultiple を使用するように言われましたが、各モデルの説明を単一の文字列に入れる必要があったため、その方法は好きではありませんでした。モデルの属性を列としてリストしたいと思いました。また、(まだ試していません) オプションで、各モデルの後にいくつかの関連モデルを表示します。そのため、CheckboxSelectMultiple よりも表示を細かく制御したかったのです。

1 年か 2 年経つと、ドキュメンテーションのコツをつかむことができます。-)。また、恐れずに django のソース コードを読んでください。

于 2013-07-01T02:38:08.997 に答える