首页 > 解决方案 > 如何在 Django 中向另一个用户发送通知

问题描述

当我创建任务并将其分配给其他用户时,分配的用户将收到通知,告知有人将您添加到任务中。分配的用户可以批准/拒绝任务。如果邀请被接受,任务将对用户可见,否则邀请被拒绝通知将返回给作者。

这是我的models.py

from django.db import models
from django.contrib.auth.models import User


# Create your models here.
class Project(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='project_author')
    assigned_to = models.ForeignKey(User, on_delete=models.CASCADE, related_name='assigned_to')
    title = models.CharField(max_length=264, verbose_name="Title ", unique=True)
    description = models.TextField(verbose_name="Description ")
    files = models.FileField(upload_to='blog_images', verbose_name="Image", blank=True)
    publish_date = models.DateTimeField(auto_now_add=True)
    update_date = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ['-publish_date', ]

    def __str__(self):
        return self.title

视图.py

class CreateProject(LoginRequiredMixin, generic.CreateView):
    model = Project
    template_name = 'ProjectApp/create_project.html'
    fields = ('assigned_to', 'title', 'description',)

    def form_valid(self, form):
        project = form.save(commit=False)
        project.author = self.request.user
        project.save()
        return HttpResponseRedirect(reverse('ProjectApp:dashboard'))

标签: djangodjango-modelsnotificationsdjango-signals

解决方案


您可以添加状态字段来跟踪项目状态。例如:

status = models.CharField(max_length=1) # status of the request: pending, denied, accepted

被分配的人可以查看分配给他的处于“待定”状态的项目列表。接受请求后,您可以将状态更新为“已接受”。

或者创建一个新班级,以防您想在某人接受工作之前尝试分配给多个人

class ProjectRequest(models.Model)
    project = models.ForeignKey(Project, null=False)
    assigned_to = models.ForeignKey(User, null=False)
    status = models.CharField(max_length=1) # status of the request: pending, denied, accepted        

指定人员可以查看请求列表并采取行动。接受请求后,您可以将项目中 ProjectRequest 和assigned_to 中的状态更新给此人。


推荐阅读