【问题标题】:django: customising multiple comments forms/modelsdjango:自定义多个评论表单/模型
【发布时间】:2011-11-09 00:22:04
【问题描述】:

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

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 模型的子类,因此它与现有的 admin 和 cmets 模板标签兼容。

然而,Django 的built-in comments settings 似乎相当死板,只允许使用get_model() and get_form() 方法自定义一个 模型/表单。

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

有人知道更好的方法吗? 我已尝试搜索 StackOverflow,但似乎没有任何结果类似于此用例。

【问题讨论】:

  • 听起来您正在寻找评级系统。为什么不使用评论系统作为灵感并编写自己的评分应用程序?好处是能够为所有 cmets 等添加报告等。
  • 不是那么多,它只是带有一些额外字段的 cmets。这个例子是为了表达形式不同,我的错。

标签: django django-comments


【解决方案1】:

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

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

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

如果您有兴趣帮助开发和/或测试,请通过github 获取此模块。

它与 contrib cmets 系统兼容,因此许多现有标签仍然有效,您不必重做所有现有模板。有关详细信息,请参阅文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 2013-07-27
    • 2012-02-01
    • 2013-11-27
    • 2012-09-23
    • 2013-01-14
    • 1970-01-01
    相关资源
    最近更新 更多