2

Я изучаю Django на Ubuntu 13.04, Python 2.7, Django 1.5, Postgres 9.2, Bootstrap 3.0. Я хотел бы получить комбинацию примера Google Apps для голосования с django-authentication.Интеграция примера урока Django Пример приложения для голосования и django-registration

В качестве моего первого усилия я получил приложение «Опросы», работающее с Django 1.5 tutorial. Затем я установил django-registration 1.0 и these templates, чтобы заставить его работать. Я выбрал этот пакет для аутентификации, а не django-allauth в результате my question on authentication framework.

Теперь я хочу интегрировать опросы и регистрацию django для записи набора результатов для каждого пользователя. После того, как результаты опроса были собраны, администратор использует интерфейс 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 PollsResults в model.py, который включает определение первичного ключа как User, который должен существовать через регистрацию django.
  • Точно, как это сделать и что следует за этим становится немного туманным для меня на данный момент.

Я уверен, что приведенное выше простое упражнение для разработчика Django. Может ли кто-нибудь дать мне некоторые подсказки или даже лучше существующий проект, который делает что-то подобное?

ответ

0

Похоже, вы немного недооцениваете силу использования рамки, такой как django. Например, вам не нужно слишком беспокоиться о таблицах в базе данных или о том, что будет их первичными ключами, потому что объект-реляционный сопоставитель объектов (ORM) django заботится о многом для вас.

Если вы хотите соединить две модели (таблицы базы данных) в Джанго вы можете использовать foreignkey так:

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

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

Кавычки вокруг «ThingOne» в моем ForeignKey на самом деле нет необходимости, потому что ThingOne модель уже , но мне все равно нравится использовать кавычки, потому что это означает, что ваши ForeignKeys также будут работать для моделей, определенных ниже (в вашем коде), ссылки на них.

Вам просто нужно добавить отношения между вашими опросами и моделями пользователей. Если у одного пользователя может быть много результатов опроса, вы, вероятно, должны использовать ManyToManyField вместо ForeignKey, но принцип тот же. Этого должно быть достаточно, чтобы вы начали.

+0

Спасибо, Гарри, но да, я понял, что вы можете сделать это, как я описал в своих шагах. Это больше о том, как склеить все вместе, это то, что мне нужно. – alex