我的通知系统,有选项"删除",就像" make as read",然后我希望当用户执行操作" read",只是从他的通知中删除,而一般用户没有这个通知。
Model.py
class Notificaciones(models.Model):
user = models.ManyToManyField(MiUsuario)
Tipo_de_notificaciones = ( (1,'Ofertas'),(2,'Error'),(3,'Informacion'))
Tipo = models.IntegerField('Tipo de notificacion',choices=Tipo_de_notificaciones, default=3,)
titulo = models.CharField("Nombre de la notifiacion",max_length=50)
mensaje = models.TextField("Descripcion de la notificacion")
imagen = models.ImageField("Imagen de la notificacion",upload_to="notificaciones")
Fecha_Caducidad_notificacion = models.DateField("Fecha de caducidad",auto_now=False,auto_now_add=False)
Estado = models.BooleanField("Estado de la notificacion", default=False)
以及我在哪里登录删除发生的事情
views.py
def delete_notificaciones(request, notificaciones_id):
notifi = Notificaciones.objects.get(id=notificaciones_id)
notifi = Notificaciones.objects.filter(user=request.user.id)
notifi.Estado = True
for notifi in notifi:
notifi.save()
return HttpResponseRedirect('/')
URL.py
url(r'^delete/(?P<notificaciones_id>\d+)/$', 'app.views.delete_notificaciones', name='Vulpini.co'),
为什么不过滤用户并发出类似读取的通知。
答案 0 :(得分:0)
notifi = Notificaciones.objects.filter(user=request.user.id)
模型中的 user
字段是一个对象,而不是字段,所以你应该像这样过滤:
notifi = Notificaciones.objects.filter(user=request.user)
我认为你应该改变一下你的观点。我想您通过将Estado
更改为True
来进行软删除。
以下代码会将所有用户的通知标记为已读:
def delete_notificaciones(request, notificaciones_id):
notifi = Notificaciones.objects.get(id=notificaciones_id) # I don't know why you get this object
notifi = Notificaciones.objects.filter(user=request.user) # Here you get a QuerySet, not an object
# use update instead of iterate over the QuerySet
notifi.update(Estado=True)
return HttpResponseRedirect('/')
如果您想将ID通知传递的当前标记为只读,则应该执行与以下内容类似的操作:
def delete_notificaciones(request, notificaciones_id):
notifi = Notificaciones.objects.get(pk=notificaciones_id, user=request.user)
notifi.Estado = True
notifi.save()
return HttpResponseRedirect('/')