django - 如何在 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'))
解决方案
您可以添加状态字段来跟踪项目状态。例如:
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 中的状态更新给此人。
推荐阅读
- database - 电子商务数据库重复文件
- javascript - 如果出于安全原因替换了prototype.constructor,有没有办法恢复它?
- c# - 从表值引用另一个方法的变量
- python - 我安装了我的自定义 python 包,但它无法工作
- elasticsearch - 在弹性搜索中过滤特定字段
- azure - 基于内存百分比的 Azure 应用服务计划的自动缩放究竟是如何工作的?
- java - LIBGDX - 刷新屏幕
- javascript - 如何在 React Js 中使用提示更改状态值?
- javascript - 带有 typeof 函数的 Firebase 推送数据返回错误
- javascript - 呃!尝试将包发布到 npm 时出现 403