2011-01-22 4 views
2

Je souhaite créer une application pour permettre le vote de n'importe quel modèle (thumbs up et thumbs down, à peu près comme SO dans ses questions et réponses), en utilisant ContentTypes (comme les commentaires framework ou les exemples de tags dans docs).Idées pour implémenter l'application ContentType "vote"

Je viens de configurer les modèles et les templatetags, il est possible d'obtenir le nombre de votes et etc. Ce qui me dérange, c'est ce qui devrait être le meilleur moyen de rendre le vote possible.

C'est la classe vote

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) 

j'ai écrit une vue simple qui reçoit le type de contenu, id d'objet et le type de vote (ou vers le bas). Mais je ne connais pas la meilleure façon d'appeler cette vue. Quelques possibilités:

  • Vote par GET demande simplement, urls.py attraperont la demande et passer le droit type de contenu (exemple: url(r'^question/(?P<question_id>)/vote/(?P<vote_type>)/$', voting_views.vote, {'content_type' : ContentType.objects.get_for_model(Question()) }, name='vote_question'),)

  • Vote par requête POST, la création d'un formulaire pour la vote qui a le ContentType pour l'objet et le type de vote. Je ne suis pas sûr comment mettre en œuvre ceci, sans avoir deux formes pour chaque modèle dans le modèle qui peut être voté.

Des idées?

+1

Je viens de publier une application similaire: [django-Valoriser] (http://django-valuate.googlecode.com). J'ai pris les idées derrière le cadre de commentaires django. – crodjer

Répondre

Questions connexes