Сопоставьте два профиля в Django framework

#python #django #forms #algorithm #django-models

#python #django #формы #алгоритм #django-модели

Вопрос:

Я создал веб-приложение, которое состоит из двух категорий пользователей (скажем, A и B), и есть общая панель, на которой они оба могут что-то публиковать. Теперь, если пользователю (Джону) из категории A предлагается, что его наилучшим соответствием является person (wick) из категории B с помощью карточки django, как я могу создать что-то, что уведомляет их обоих.

Предположим, ДЖОНУ нравится то, что предлагает WICK, и на карточке WICK есть кнопка book, которую он видит на карточке WICK (мини-профиль). Теперь я хочу уведомить Wick о том, что ДЖОН заинтересован в вас, когда ДЖОН нажимает на кнопку «Заказать».

пример данных

Производитель

 M_ID   From  To  M_Type    T_Type  T_Length T_Weight #Trucks 
JOHN   A     B   Boxes     Open    12-Tyre  22       3       
BLAKE  C     D   Cylinders Trailer HIGH     23       2       
GREG   G     H   Scrap     Open    14-Tyre  25       5    
  

Транспортер

 T_ID  From To T_Type  T_Length T_Weight #Trucks  Price
WICK  A    B  Open    12-Tyre  22       5        1500
PATEL G    H  Open    14-Tyre  25       10       1200   
NICK  A    B  Open    12-Tyre  22       7        1900
  

Алгоритм возвращает данные в этом формате

 Manufacturer   Best Match   Second Best
JOHN           WICK         NICK
GREG           PATEL         - 
  

Я могу показать ДЖОНУ, что его лучшие соответствия — это WICK и NICK (и когда он нажимает на них, ему будет показан их мини-профиль с опцией BOOK, но что мне делать дальше, чтобы что-то произошло (предупредить WICK / NICK), когда он нажимает на кнопку book??

Ответ №1:

Это довольно широкий вопрос, но здесь идет.

ДЖОН нажимает, и обработка запроса либо выполнит что-то немедленно (например, отправит электронное письмо НИКУ), либо сохранит что-то в базе данных, что будет доведено до сведения НИКА при следующем взаимодействии НИКА с приложением. Возможно, таблица уведомлений с внешними ключами для ДЖОНА (notifier), НИКА (notifiee —yuk ) и связанных с ними данных.

Что-то подобное последнему я увижу вверху страницы stackoverflow, когда вы проголосуете за этот пост или добавите комментарий. Если я не вернусь к stackoverflow в течение месяца, я увижу это тогда, или вы можете указать дату истечения срока действия того, что вы храните, чтобы по истечении этого периода времени уведомление считалось устаревшим и удалялось на лету, и НИК никогда не узнал об этом.

Я ожидаю, что вы сможете найти где-нибудь что-то, написанное кем-то другим для реализации большей части этого. Вероятно, это форма промежуточного программного обеспечения, если его нужно проверять буквально при каждом взаимодействии, а не только при входе в систему. Извините, я не могу предложить никаких указаний.

Ответ №2:

Вы не должны разговаривать в таблицах SQL, когда на самом деле вы работаете на уровне абстракции Django ORM.

Все, что вам нужно, это поле ManyToMany. Вы добавите это поле m2m и покажете новые, для которых было сделано пользовательское предложение (возможно, объединить производителя и транспортера в одну модель (таблицу), чтобы не дублировать эту функциональность).

Вместо использования auto m2m я предлагаю вам использовать сквозную модель для добавления дополнительного поля, такого как Boolean has_been_seen . Или вы можете предположить, что экземпляр был замечен, если пользователь last_activity больше даты-времени, в которое был создан экземпляр.