2

我在Ubuntu 13.04,Python 2.7,Django 1.5,Postgres 9.2, Bootstrap 3.0學習Django。我想實現教程示例輪詢應用程序與django-authentication的組合。集成Django教程示例投票應用程序和Django註冊

作爲我的第一次努力,我得到了從Django 1.5 tutorial工作的民意調查應用程序。然後,我安裝了django-registration 1.0these templates以使其正常工作。由於my question on authentication framework,我選擇了該包進行身份驗證,而不是django-allauth

現在我想集成民意調查和Django的註冊,以記錄每個用戶的結果集。收集完民意調查結果後,admininstrator使用Django Admin界面運行腳本來分析結果(例如計算某些統計信息)並向所有用戶的子集發送電子郵件。

我簡單地看了兩個現有的項目,看起來可以讓我開箱即用。

  1. Light Bird's Questionnaire App太複雜了,使用基於模塊化類的視圖的自定義庫。我希望儘可能簡單,儘可能多地使用即時可用的Django 1.5功能,以便於維護和初始設計。

  2. Pinax web framework on top of Django,雖然一個好主意,似乎在2011年的黑暗時代停滯不前,最新的代碼只支持Django 1.4和Bootstrap 2.x.啓動器項目看起來不太有用,文檔也不閃存。

基於上述看起來好像我將不得不手動集成投票和註冊。在第一階段,我大致思考如下:

  • 民意調查&選擇可以簡化爲只是一個問題的數字答案。
  • 在數據庫級別,我們需要一個單獨的表。
  • 主鍵將是用戶標識。
  • 每列將存儲一個答案。
  • 我猜這將需要class PollsResultsmodel.py將包括定義的主鍵爲User,應該存在通過django註冊。
  • 準確地說,如何做到這一點,以下的內容現在對我來說有點朦朧。

我確定以上是Django開發人員的簡單練習。任何人都可以給我一些啓動提示,甚至更好的做一個類似的現有項目嗎?

回答

0

看起來你略微低估了使用諸如django之類的框架的能力。例如,你並不需要太擔心數據庫中的表或者它們的主鍵,因爲django的對象關係映射器(Object Relational Mapper,ORM)爲你提供了很多幫助。

如果你想兩個模型(數據庫表)在Django連接,你可以使用一個foreignkey這樣的:

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

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

我ForeignKey的引號圍繞「ThingOne」實際上是不必要的,因爲ThingOne模型已經已定義,但我喜歡使用引號,因爲這意味着您的ForeignKeys也可以用於下面定義的模型(在您的代碼中)鏈接到它們的模型。

因此,您只需在您的投票和用戶模型之間添加關係即可。如果一個用戶可能有很多輪詢結果,你應該使用ManyToManyField而不是ForeignKey,但是原理是一樣的。這應該足以讓你開始。

+0

謝謝,加里,但是,我意識到你可以像我在我的步驟中所描述的那樣做到這一點。更重要的是如何將它們粘合在一起就是我所追求的。 – alex