【问题标题】:Integrating Django tutorial example Polls app and django-registration集成 Django 教程示例 Polls app 和 django-registration
【发布时间】:2013-10-20 01:58:26
【问题描述】:

我正在 Ubuntu 13.04、Python 2.7、Django 1.5、Postgres 9.2 上学习 Django, 引导程序 3.0。我想实现教程示例 Polls 应用程序与 django-authentication 的组合。

作为我的第一次尝试,我在Django 1.5 tutorial 上运行了投票应用程序。然后我安装了django-registration 1.0these templates 使其工作。由于my question on authentication framework,我选择了该软件包进行身份验证,而不是django-allauth

现在我想集成 Polls 和 django-registration 来记录每个用户的一组结果。收集投票结果后,管理员使用 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。入门项目看起来没那么有用,文档也没有闪现。

根据上述情况,我似乎必须手动集成民意调查和注册。一开始,我的想法大致如下:

  • 投票和选择可以简化为问题的数字答案。
  • 在数据库级别,我们需要一个单独的表。
  • 主键是用户 ID。
  • 每一列将存储一个答案。
  • 我猜这需要model.py 中的class PollsResults,其中包括将主键定义为User,它应该通过django-registration 存在。
  • 具体怎么做以及接下来的事情让我现在有点模糊。

我确信以上对于 Django 开发人员来说是一个简单的练习。任何人都可以给我一些开始的提示,甚至更好的做类似事情的现有项目吗?

【问题讨论】:

    标签: django django-models django-views integration django-registration


    【解决方案1】:

    您似乎有点低估了使用 django 等框架的威力。例如,您真的不需要过多担心数据库中的表或它们的主键,因为 django 的对象关系映射器 (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 也适用于下面定义的模型(在您的代码中)链接到它们的模型。

    因此,您只需在 Polls 和 User 模型之间添加关系。如果一个用户可能有许多投票结果,您可能应该使用ManyToManyField 而不是 ForeignKey,但原理是相同的。这应该足以让您入门。

    【讨论】:

    • 谢谢,Garry,但是是的,我已经意识到您可以按照我在步骤中描述的那样执行此操作。我追求的是如何将它们粘合在一起。
    猜你喜欢
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 2014-07-05
    • 2013-07-12
    • 2013-05-21
    • 2011-02-01
    • 2012-09-06
    • 2016-12-24
    相关资源
    最近更新 更多