2012-03-14 24 views
-2

python-djangoに新しいヘルプが必要... テンプレートから選択したテーブル行をチェックボックスのあるviews.pyに渡したいhtmlのチェックボックスを使って選択したテーブル行を渡す方法n views.pyにデータを渡すdjango

template:a.html 
<tr > {% if getlog %} 
<form action="{% url list %}" method="post">{% csrf_token %} 
<td><input type="checkbox" id="check_all" checked="checked"/></td>   
<thead><th COLSPAN="2">App Name</th> 
    <th COLSPAN="2">File Name</th> 
    <th COLSPAN="2">Function Name</th> 
    <th COLSPAN="2">Path Name</th> 
    <th COLSPAN="2">Line No</th> 
    <th COLSPAN="2">Level Name</th> 
    <th COLSPAN="2">Message</th> 
    <th COLSPAN="2">Thread Name</th> 
</tr>                 
</thead> 
{% for log in loglist %} 
<tr id="tr1"> 
<td><input type="checkbox" class="check_field" checked="checked" name="list1"/> </td> 
    <td colspan="2" > {{ log.app.appname }} </td> 
    <td colspan="2"> {{ log.filename }}</td> 
    <td colspan="2" >{{ log.funcname }}</td> 
    <td colspan="2" >{{ log.pathname }}</td> 
    <td colspan="2" >{{ log.lineno }}</td> 
    <td colspan="2" >{{ log.typeid.levelname }}</td> 
    <td colspan="2" >{{ log.typeid.message }}</td> 
    <td colspan="2">{{ log.threadName }}</td> 
</tr> 
{% endfor %}  
</tbody> 
</table> 

どのようにそれを行うために... を複数の行を選択するn個選択された行は、テンプレートから消える取得する必要のviews.pyするPOSTメソッドで行を提出した後にすることができますポストmethod..andを使用してチェック?どこが間違っていますか? ありがとう... :)

答えて

0

データ提出を処理する非Djangoの方法を使用すると、間違っている可能性があります。

Djangoの電源がなど、あなたのためのフォームを生成するだけでなく、データベースにレコードを保存するように一般的なタスクを扱うことができる非常に強力なフォームシステムにあるフォームの検証

私はそれが痛みますが、それを知っている実際にはそれは価値があります Djangoの本を使い、Djangoの基本に慣れ親しむためにいくつかのサンプル演習をするには時間がかかります。それを手にして、実際にやりたいことを前進させるためにどのようなステップを取るべきかを考えることができます。

あなたのものは特別なケースですので、簡単なformsetやModelFormでは実際にこのトリックを行うことはできません。ここでは私がお勧めしたいと思います。

models.py

class Log(models.Model): 
    # whatever fields you want 
    date_hidden = models.DateTimeField(null=True, blank=True) 

forms.py

class LogDisplayForm(forms.Form): 
    logs_to_hide = forms.ModelChoiceField(required=False, queryset=Log.objects.exclude(date_hidden__isnull=False) 

    def save(self, *args, **kwargs): 
     if self.cleaned_data.get('logs_to_hide'): 
      Log.object.filter(pk__in=self.cleaned_data['logs_to_hide']).update(date_hidden=datetime.datetime.now()) 

その後、あなたのテンプレートフォームで、ちょうどlogs_to_hideとフィールドの値が主であることを確認するためにリスト1の名前を変更ログレコードのキー。これは、Djangoが実際にどのように動作するかを読み、フォームの検証やフォームの保存をビューでどのように処理するかを知っていることを前提としています。

私があなたに与えたコードは不完全であり、あなたのかなりの追加作業なしには動作しません。 ポイントです。

+0

私は文書を読むでしょう。しかし、他の方法でフォームにデータを渡すのですか?私は答えのうちの1つを読み込みます。デフォルトでは、httpオブジェクトはチェックされたチェックボックスのリストをviews.pyに送ります。list = request.POST.getlist( 'checkbox_name')を使って取得できます。 – manali

+2

申し訳ありませんが、あなたはこれがどのように機能するかを十分に理解していません。私は実際に文書を見て、フォームの仕組みの基礎を学ぶことが必要だと思います。基本的に、あなたがやっていないのは、あなたがしていないビュー関数に実際の値を送る必要があるからです。あなたが私の指示に従って、ドキュメントを読むと、それはうまくいくでしょう。設定したテンプレートはそのまま動作しません。 –

+0

ありがとう... docを読んでいますが、どの方向に動かなければならないのですか... iはdjango-forms k javascript .. cozに行きます。選択したチェックボックスのテーブル行を取得する必要があります。テーブル行のチェックボックス?どのように私は実際のデータを得ることができます.. ??混乱... – manali

関連する問題