Идеи для реализации приложения голосования на основе ContentType - PullRequest
2 голосов
/ 22 января 2011

Я хочу создать приложение, позволяющее голосовать за любую модель (большой палец вверх и большой палец вниз, почти как SO в своих вопросах и ответах), используя ContentTypes (например, структуру комментариев или примеры тегов в документах).

Я просто настроил модели и ярлыки шаблонов, можно получить количество голосов и т. Д. Меня беспокоит то, что должно быть лучшим способом сделать голосование возможным.

Это голосованиекласс:

class Vote(models.Model):
    TYPES_VOTE = (
        ( 'POS', 'Positive' ),
        ( 'NEG', 'Negative' ),
    )

    type            = models.CharField(max_length=3, choices=TYPES_VOTE, default=None)
    content_type    = models.ForeignKey(ContentType)
    object_id       = models.PositiveIntegerField(db_index=True)

Я написал простое представление, которое получает тип контента, идентификатор объекта и тип голосования (вверх или вниз).Но я не знаю, как лучше назвать это мнение.Некоторые возможности:

  • Голосовать только GET-запросом, urls.py перехватит запрос и передаст правильный тип контента (пример: url(r'^question/(?P<question_id>)/vote/(?P<vote_type>)/$', voting_views.vote, {'content_type' : ContentType.objects.get_for_model(Question()) }, name='vote_question'),)

  • Голосование по запросу POST, создание формы для голосования с ContentType для объекта и типа голосования.Я не уверен, как реализовать это, не имея двух форм для каждой модели в шаблоне, за который можно проголосовать.

Есть идеи?

1 Ответ

2 голосов
/ 22 января 2011

Вы можете проверить http://code.google.com/p/django-voting/

Это очень похоже на то, что вы пытаетесь сделать: http://code.google.com/p/django-voting/source/browse/trunk/voting/models.py

...