1

假设我有一个社交网络的 django 项目,这个网站有很多用户。所有用户都来自 django.contrib.auth.models.User 类。现在,假设一个用户写了一个博客,并在其中提到了另一个用户,其中带有类似于 twitter 的“@”。那么具体怎么做呢?应该采取什么样的方法?

而不仅仅是用户模型,而是如何使用任何自定义模型来做到这一点?就像我有一个博客模型并且每个博客都有一个标题,如何用那个标题来提及?最重要的是,这种提及应该是自动的。就像如果一个用户的名字是“PhantomWarrior”,那么如果一个人写了“@Phant”并且他还在写,它应该自动预测用户名“PhantomWarrior”并给用户选项来选择提及。同样如何用博客的标题做到这一点?

我发现了这篇文章:如何在 stackoverflow 中的 django 开发项目中使用 '@' 提及/标记用户谈论这件事,但答案并不满足我想要的。

那么如何做到这一点呢?任何帮助都感激不尽。

4

1 回答 1

1

你可以通过两种方式做到这一点。在任何情况下,您都需要将博客文章中的 m2m 字段添加到用户模型。

  1. 最简单的解决方案。在模型中进行任何创建或更改后,您需要检查所有@NAME模式的内容并解析文本,例如使用正则表达式。在此之后,您需要在用户模型中搜索所有已建立的模式并将其添加到博客文章的 m2m 字段中。
  2. 这个解决方案在大多数情况下使用,就像你写的一样。当您在文本框中写 @ 时,您需要添加每次打开自动完成功能的前端组件。此自动完成组件应连接到 api 方法,该方法通过搜索模式返回用户名和 ID 列表。当您在自动完成中选择用户时,您需要将他的 ID 存储在前端的某个存储中。发送表单时,您发送用户 ID 和所有其他表单数据,并将其保存在博客文章的 m2m 字段中。
于 2020-01-17T16:56:54.420 回答