2

Ubuntu 13.04、Python 2.7、Django 1.5、Postgres 9.2、Bootstrap 3.0 で Django を学習しています。チュートリアルの例の Polls アプリと django-authentication の組み合わせを実現したいと思います。

私の最初の試みとして、Django 1.5 チュートリアルから動作する Polls アプリを取得しました。次に、 django-registration 1.0これらのテンプレートをインストールして機能させました。認証フレームワークに関する質問の結果、django-allauth ではなく、認証用にそのパッケージを選択しました。

ここで、Polls と django-registration を統合して、ユーザーごとの一連の結果を記録したいと考えています。投票結果が収集された後、管理者は Django 管理インターフェイスを使用してスクリプトを実行し、結果を分析 (統計の計算など) し、すべてのユーザーのサブセットに電子メールを送信します。

すぐに使えるように見える 2 つの既存のプロジェクトを簡単に調べました。

  1. Light Bird のアンケート アプリは、モジュール クラス ベースのビューのカスタム ライブラリを使用すると複雑すぎました。メンテナンスと初期設計を容易にするために、すぐに使用できる Django 1.5 の機能をできるだけ多く使用して、できるだけシンプルに保ちたいと考えています。

  2. Django の上にある Pinax Web フレームワークは素晴らしいアイデアですが、最新のコードは Django 1.4 と Bootstrap 2.x のみをサポートしており、2011 年の暗黒時代にはまっているようです。スターター プロジェクトはそれほど役に立たないように見えますし、ドキュメントもフラッシュされていません。

上記に基づいて、投票と登録の統合を手動で行う必要があるようです。最初のパスでは、大まかに次のことを考えていました。

  • 投票と選択は、質問に対する数値の回答だけに単純化できます。
  • データベース レベルでは、別のテーブルが必要です。
  • 主キーはユーザー ID です。
  • 各列には、1 つにつき 1 つの回答が格納されます。
  • これには、主キーを として定義することを含むclass PollsResultsinが必要になると思います。これは、django-registration を介して存在する必要があります。model.pyUser
  • 正確にそれを行う方法とそれに続くことは、現時点では少しぼんやりしています。

上記は Django 開発者にとって簡単な演習であると確信しています。誰かが私にいくつかのヒントを教えてくれますか?

4

1 に答える 1

0

django などのフレームワークを使用する能力を少し過小評価しているようです。たとえば、django のオブジェクト リレーショナル マッパー (ORM) が多くのことを処理してくれるので、データベース内のテーブルやそれらの主キーとなるものについてあまり心配する必要はありません。

django で 2 つのモデル (データベース テーブル) を接続する場合は、次のように外部キーを使用できます。

class ThingOne(models.Model):
    name = models.CharField(max_length=50)

class ThingTwo(models.Model):
    thing_one = models.ForeignKey('ThingOne')

ThingOneモデルが既に定義されているため、ForeignKey の 'ThingOne' を囲む引用符は実際には不要ですが、 ForeignKeys がリンクしているモデルの下 (コード内) で定義されたモデルでも機能することを意味するため、とにかく引用符を使用するのが好きです。

したがって、Polls モデルと User モデルの間に関係を追加するだけで済みます。1 人のユーザーが多数のポーリング結果を持っている可能性がある場合は、ForeignKey の代わりにManyToManyFieldを使用する必要がありますが、原則は同じです。それはあなたが始めるのに十分なはずです.

于 2013-10-17T08:36:17.140 に答える