упоминание или пометка пользователей или любых моделей в django - PullRequest
0 голосов
/ 17 января 2020

Допустим, у меня есть django проект социальной сети, и у этого сайта много пользователей. Все пользователи из класса django .contrib.auth.models.User. Теперь, скажем, один пользователь пишет блог и упоминает в нем другого пользователя с символом @, похожим на твиттер. Так как именно это сделать? Какой подход следует использовать?

И если исходить только из модели пользователя, то, как это сделать с любой другой моделью? Например, если у меня есть модель блога и у каждого блога есть заголовок, как упомянуть этот заголовок? И самое главное, это упоминание должно быть автоматическим. Например, если имя одного пользователя "PhantomWarrior", то если кто-то пишет "@Phant", а он все еще пишет, он должен автоматически предсказать имя пользователя "PhantomWarrior" и дать пользователю возможность выбрать его для упоминания. Точно так же, как сделать это с заголовком блога?

Я нашел этот пост: как упомянуть / пометить пользователей с помощью '@' в django разработанном проекте в stackoverflow, о котором идет речь эта вещь, но ответ вроде не удовлетворил то, что я хочу.

Так как это сделать? Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 17 января 2020

Вы можете сделать это двумя способами. В любом случае вам необходимо добавить поле m2m из сообщения в блоге в модель пользователя.

  1. Самое простое решение. После любого создания или изменения в модели вам необходимо проверить содержимое и проанализировать текст для всех шаблонов @NAME, например, с помощью regexp. После этого вам нужно найти все найденные шаблоны в пользовательской модели и добавить его в поле m2m в записи блога.
  2. Это решение используется в большинстве случаев, как вы написали. Вам нужно добавить компонент внешнего интерфейса, который будет открывать автозаполнение каждый раз, когда вы пишете @ в текстовых полях. Этот компонент автозаполнения должен быть подключен к методу API, который возвращает список имен и идентификаторов пользователей по шаблону поиска. Когда вы выбираете пользователя в автозаполнении, вам нужно сохранить его идентификатор в некотором хранилище на стороне интерфейса. Когда форма будет отправлена, вы отправите идентификаторы пользователей со всеми другими данными формы и сохраните их в поле m2m в сообщении в блоге.
...