我想要一个我的应用程序的通知系统,所以我正在研究一个名为django-notifications的django包。我理解了所有这些,但NOTIFICATION_SOFT_DELETE =真实设置。
我的意思是当我执行以下操作时:
from notifications import notify
notify.send(user, recipient=user, verb='you reached level 10')
如果我没有错,这将使用deleted=False
进入数据库。我的settings.py
:
NOTIFICATIONS_SOFT_DELETE=True
更新为deleted=False
至deleted=True
。但我不知道这种变化何时发生。文档中有一个API将所有通知标记为deleted=True
:
qs.mark_all_as_deleted()| qs.mark_all_as_deleted(受体)
标记查询集中的所有通知(也可以选择过滤 收件人)as deleted = True。必须使用 NOTIFICATIONS_SOFT_DELETE =真。
但如何将某些通知标记为deleted
??
答案 0 :(得分:0)
这是官方文件:
软删除
默认情况下,
delete/(?P<slug>\d+)/
会从DB中删除指定的通知记录。您可以将此行为更改为&#34;将Notification.deleted字段标记为True&#34;由:添加到您的settings.py:
NOTIFICATIONS_SOFT_DELETE=True
使用此选项,QuerySet方法未读和读取包含一个过滤器:deleted = False。同时,QuerySet方法已删除,active,mark_all_as_deleted,mark_all_as_active已打开。请参阅QuerySet方法部分中的更多详细信息。<强>
qs.mark_all_as_deleted() | qs.mark_all_as_deleted(recipient)
强>将查询集中的所有通知(可选择也按收件人筛选)标记为
deleted=True
。必须与NOTIFICATIONS_SOFT_DELETE=True
一起使用。
所以,如果你想标记一些要删除的通知,你可以做其中任何一个
delete/(?P<slug>\d+)/
mark_all_as_deleted()
或mark_all_as_deleted(recipient)
答案 1 :(得分:0)
这就是您所需要的。
安装 django-notifications-hq 并将“通知”作为应用添加到 settings.py 中已安装的应用程序后,并添加 url('^inbox/notifications/', include(notifications.urls, namespace='通知'))到您的网址格式。
确保然后安装 django-notifications-rest,然后将“notifications_rest”安装为您在上面添加的应用程序旁边的应用程序。然后还添加 url('^notifications/', include('notifications_rest.urls')) 如果您使用的是 django v3.0 及以下版本,或者如果您使用的是 v3.1 及以上版本,请添加 >path('^notifications/', include('notifications_rest.urls')) 在 url 文件中的 urlpatterns 下。
然后python manage.py makemigrations。这将创建一个 rest 端点,您可以在 http://localhost:8000/notifications 上访问它。从这个端点到你的前端,比如 react,你可以发送一个 api 请求来获取所有未读的请求,然后在 onclick 事件之后通过 api 发送另一个请求将所有请求标记为已读。
http://localhost:8000/notifications/all/ 将返回所有请求 http://localhost:8000/notifications/unread/ http://localhost:8000/notifications/delete/22 将删除 id 为 22 的请求 http://localhost:8000/notifications/mark-all-as-read/ 会将所有请求标记为已读,以及您可以访问的所有其他端点。
但我相信在这种情况下,使用 http://localhost:8000/notifications/unread/ 在页面加载时获取所有未读请求,然后单击,使用 http:// localhost:8000/notifications/mark-all-as-read/ 或 http://localhost:8000/notifications/delete/22 分别删除或减少通知。