繁体   English   中英

在 Django 中提及或标记用户或任何模型

[英]mentioning or tagging users or any models in django

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM