django:自定义多个注释表单/模型

时间:2011-11-09 00:22:04

标签: django django-comments

在这种情况下,我有两个或更多模型:

class Store(models.Model):
    name = models.CharField(max_length = 100)
    homepage = models.URLField(verify_exists = False)
    ....

class Product(models.Model):
    display = models.BooleanField(default = True)
    created = models.DateTimeField(auto_now_add = True)
    changed = models.DateTimeField(auto_now_add = True, auto_now = True)
    ....

这些都需要不同的评论模型/表格。例如:

  • 产品评论我想要一些额外的信息,如产品评级,优点,缺点等。
  • 但是对于商店,我想有一些领域,如费率客户支持,费率沟通/响应,如果运费价格合理的布尔值等。

这两个模型都是contrib Comments模型的子类,因此它与现有的管理和评论模板标签兼容。

但是,似乎来自Django的built-in comments settings相当严格,只允许使用get_model() and get_form()方法自定义一个模型/表单。

我在两种情况下都使用不同的方法正常工作,但它涉及大量的代码重复,如果我要添加第3或第4类注释子类,这是相当不切实际的。

有谁知道更好的方法吗? 我试过搜索StackOverflow,但似乎没有结果类似于这个用例。

1 个答案:

答案 0 :(得分:1)

我最终实现了一个位于当前Django contrib评论模块之上的额外模型。

评论系统现在更加灵活,允许各种新功能,例如:

  • 首先,允许您将各种评论模型与特定目标模型相关联
  • 将您的评论模型直接链接到ORM中的目标模型,而不需要像contrib评论模块那样的任何黑客攻击
  • 允许在表单中进行自定义验证,如果字段无效,则不会引发500
  • 在当前页面中显示评论预览,而无需将用户重定向到空白页面
  • 在不使用信号的情况下更容易实施事后评论事件
  • 加入contrib评论系统,使其与现有的数据库/插件/模板标签/模板过滤器兼容
  • 维持对评论“comment_was_posted”信号
  • 的支持
  • 易于主题。模型名称包含在表单类名中,因此您可以为每个表单指定样式。
  • 轻松覆盖模板(见下文)

如果您有兴趣帮助开发和/或测试,可以在github获取此模块。

它与contrib注释系统兼容,因此许多现有标签仍然可用,您无需重做所有现有模板。有关详细信息,请参阅文档。