0

Django で基本的な連絡フォームを用意しました。データは正常に保存されます。しかし、保存されたデータ (すべての db 列) を html テーブルとして取得し、それを自分のサイト (管理インターフェイスではなく) に表示したいと考えています。

モデルは次のとおりです。

class ContactForm(forms.Form):
    name = forms.CharField(label='Your name')
    place = forms.CharField(max_length=100,label='Your place')
    message = forms.CharField(label='Your message')
    url = forms.URLField(label='Your Web site', required=False)
    options = forms.BooleanField(required=False)
    day = forms.DateField(initial=datetime.date.today)

ビューは投稿データのみを受け入れ、「感謝」ページにリダイレクトします。

やってみContactForm.objects.all()ましたが、エラーは次のとおりObjects attribute does not exist for ContactFormです。

4

2 に答える 2

2

モデルを作成する必要があるようです。django モデルはデータベース テーブルを記述し、Python でそのテーブルを処理する機能を作成します。データを保存したい場合は、データベースに保存する必要があり、そのためのモデルが必要になります。

次のようなものを試してください -

from django.db import models

class Contact(models.Model):
    name = models.CharField(label='Your name', max_length=128)
    place = models.CharField(max_length=100,label='Your place')
    message = models.CharField(label='Your message', max_length=128)
    url = models.URLField(label='Your Web site', required=False)
    options = models.BooleanField(required=False)
    day = models.DateField(initial=datetime.date.today)

Form次に、継承したいフォームを作成する代わりに(モデル フォームの詳細については、ドキュメントModelFormを参照してください)。すべてのフィールドがすでにモデルに記述されているため、非常に単純なはずです-

from django.forms import ModelForm

class ContactForm(ModelForm):
    class Meta:
        model = Contact

フォームの保存を処理するビューが必要です (これはドキュメントの例です)。次にContact.objects.all()、キャシーの回答の例に従って表示することができます。または、テーブルを表示するための便利なプラグインであるDjango-Tables2を確認してください。

于 2013-02-06T07:56:47.737 に答える
0

ビュー.py

def view_name (request):
    contacts = Contact.objects.all()
    return render(request, 'page.html', {
        'contacts': contacts
    })

html

<html>
    ....

    <body>
        <table>
        {% for contact in contacts %}
            <tr>
                <td>{{contact.name}}</td>
                <td>{{contact.place}}</td>
                <td>....</td>
                <td>....</td>
            </tr>
        {% endfor %}
        </table>
    </body>
</html>
于 2013-02-06T07:58:48.273 に答える