【问题标题】:Django strategy for automatically suggesting matching contentDjango 自动建议匹配内容的策略
【发布时间】:2012-01-28 19:21:58
【问题描述】:

我正在考虑将自定义编写的 PHP CMS 移植到 Django 中。 CMS 当前具有的功能之一是图像上传功能。我写一篇文章,用信息标记它,然后为它选择一张照片。如果系统有任何照片被添加到与新照片相同标签的文章中,它也会为该文章推荐照片。如果没有匹配,则可以添加新图像。

如果这没有意义,假设我将一篇文章标记为Bruce SpringsteenThe BeatlesLed Zeppelin。下次我添加标签为The Beatles 的文章时,应该建议我使用为第一篇文章添加的图像。

实现这一点的最佳 Django 适用方式是什么?我查看了 Photologue 应用程序并集成了它,我知道它支持标记(这里的问题是我使用的是django-taggit,而 Photologue 支持django-tagging)。一种方法可能是简单地自己构建它——当用户上传一篇文章时,我在他们保存文章后运行一个挂钩以将标签与图像相关联。我只是不确定如何根据该信息在管理工具中自动建议图像。

非常感谢任何想法/方法。

【问题讨论】:

  • 听起来你在模型端没问题——你将能够选择适当图像的查询集。您只需要知道如何构建管理工具小部件来显示它们?您所说的管理工具是指django-admin-tools

标签: django


【解决方案1】:

这几乎肯定是您必须自己构建的东西。 Django 有数量适中的库(您显然已经找到了)。与其他解决方案不同,它没有很多东西可以让你 100% 达到你想要的解决方案(而像 Drupal 这样的东西可能会让你 100% 达到目标)。

你可能需要做的(在高层次上)是这样的:

  • 创建一个 AJAX 视图,该视图将当前标签作为参数,并对现有帖子进行查询以查看哪些标签匹配并从这些帖子返回图像。
  • 在视图中使用 jQuery/javascript 在添加标签时调用页面上的 AJAX 视图
  • 使用 jQuery 更新页面上的 <div> 并显示视图返回的所有图像

这是一个similar example,可能会帮助您入门。

您可以将django-ajax 作为您请求的帮助库,但绝对没有必要。

【讨论】:

  • 为此干杯。我想在 Django 的管理区域内完成所有这些工作,所以不确定它在动态建议可以选择的内容方面有多灵活。我可能会重新考虑模型,但这些提示很有用 - 谢谢!
  • 是的,Django 管理员几乎会对你想做的任何事情提出挑战。您也许可以使用context processor 覆盖模板并滑入模板变量,尽管我从未尝试在管理员中这样做,所以我不知道它是否会起作用。可能值得考虑设计一个前端页面来完成这项任务。
【解决方案2】:

可以使用 django 的 contenttypes framework 实现您的图像模块和任何其他 django 模块之间的挂钩,它还提供了一些有用的实例方法来返回相关/挂钩的对象。

【讨论】:

    猜你喜欢
    • 2015-10-16
    • 2019-06-11
    • 2019-04-06
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 2021-05-08
    • 2021-11-12
    相关资源
    最近更新 更多