Skip to main content

A simple Django app to conduct vote.

Project description

Django Vote

django-vote is a simple Django app to conduct vote for django model.

This project was inspired by django-taggit

Ci codecov PyPI version

Quick start

Install django-vote by pip

pip install django-vote

Add 'vote' to your INSTALLED_APPS setting like this

INSTALLED_APPS = (
  ...
  'vote',
)

Add VoteModel to the model you want to vote

from vote.models import VoteModel

class ArticleReview(VoteModel, models.Model):
    ...

Run migrate

manage.py makemigrations
manage.py migrate

Use vote API

review = ArticleReview.objects.get(pk=1)

# Up vote to the object
review.votes.up(user_id)

# Down vote to the object
review.votes.down(user_id)

# Removes a vote from the object
review.votes.delete(user_id)

# Check if the user already voted (up) the object
review.votes.exists(user_id)

# Check if the user already voted (down) the object
# import UP, DOWN from vote.models
review.votes.exists(user_id, action=DOWN)

# Returns the number of votes for the object
review.votes.count()

# Returns the number of down votes for the object
review.votes.count(action=DOWN)

# Returns a list of users who voted and their voting date
review.votes.user_ids()


# Returns all instances voted by user
Review.votes.all(user_id)

Use template tags

There are two template tags you can use in template:

  1. vote_count to get vote count for a model instance
  2. vote_exists to check whether current user vote for the instance
{% load vote %}
<ol>
    {% for comment in comments %}
    <li>
        {{comment.content}} - up:{% vote_count comment "up" %} - down: {% vote_count comment "down" %} - exists_up:
        {% vote_exists comment user "up" %} - exists_down: {% vote_exists comment user "down"%}
    </li>
    {% endfor %}
</ol>

Use VoteMixin for REST API

Install django-rest-framework

from rest_framework.viewsets import ModelViewSet
from vote.views import VoteMixin

class CommentViewSet(ModelViewSet, VoteMixin):
    queryset = Comment.objects.all()
    serializer_class = CommentSerializer
POST /api/comments/{id}/vote/
POST /api/comments/{id}/vote/ {"action":"down"}
DELETE /api/comments/{id}/vote/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_vote-2.5.0.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_vote-2.5.0-py3-none-any.whl (15.8 kB view details)

Uploaded Python 3

File details

Details for the file django_vote-2.5.0.tar.gz.

File metadata

  • Download URL: django_vote-2.5.0.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for django_vote-2.5.0.tar.gz
Algorithm Hash digest
SHA256 d15b1d315df97b10d3e9e0bd4897fd4650de8a1f8b8aa0563efc4779b40ec352
MD5 ca48e745a48eba5363c1f9f4a5143dac
BLAKE2b-256 618a0a28b15b69da4c00036b3582238524a663cb35d4edb297302e89c6b24edd

See more details on using hashes here.

File details

Details for the file django_vote-2.5.0-py3-none-any.whl.

File metadata

  • Download URL: django_vote-2.5.0-py3-none-any.whl
  • Upload date:
  • Size: 15.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for django_vote-2.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4c1409f7edbd98ab05607b14ff86ae6fc41be05a06dcede54d7d55d95a192956
MD5 5bf4c85d42a4ef98f58c6819e6ce8548
BLAKE2b-256 f64e4cf3cc7d114a44669de2dcfd1a074917285ee23fcdc4de3005a3a64e8095

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page