【发布时间】:2011-06-13 12:19:30
【问题描述】:
我想创建一个应用程序,允许使用 ContentTypes(如 cmets 框架或文档中的标签示例)对任何模型进行投票(赞许和不许,就像它的问题和答案中的 SO)。
我只是设置了模型和模板标签,可以得到票数等。 让我烦恼的是什么应该是使投票成为可能的最佳方式。
这是投票类:
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)
我编写了一个简单的视图,它接收内容类型、对象 ID 和投票类型(向上或向下)。但我不知道调用此视图的最佳方式。一些可能性:
仅通过 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。我不确定如何实现这一点,因为模板中的每个模型都没有两个可以投票的表单。
有什么想法吗?
【问题讨论】:
-
我刚刚发布了一款类似的应用程序:django-valuate。我从 django cmets 框架中获取了它背后的想法。
标签: django content-type