【问题标题】:How can I send Notification to another user in Django如何在 Django 中向另一个用户发送通知
【发布时间】:2021-04-19 02:55:07
【问题描述】:

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

这是我的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

Views.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'))

【问题讨论】:

    标签: django django-models notifications django-signals


    【解决方案1】:

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

    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 中的状态更新给此人。

    【讨论】:

      【解决方案2】:

      什么样的通知?想存放在哪里?最快的方法是在项目中添加一些状态字段,可以有“邀请、接受、拒绝”等状态,然后如果被邀请,则显示给用户并添加接受/拒绝选项。

      在这种情况下,assigned_to 和 status 字段之间的关系将模拟您可以在某处显示的通知,如果想要更复杂,请创建一个单独的通知模型来存储某人被邀请和接受/拒绝的次数。

      如果想通过邮件/短信/设备推送通知用户,可以检查一些可以实现的第三部分库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-25
        • 2020-06-15
        • 1970-01-01
        • 2021-08-12
        相关资源
        最近更新 更多