django - 需要帮助更改视图上模型的属性
问题描述
我需要在视图上更改模型的属性,但这是我的代码工作视图:
class TaskRequest(APIView):
permission_classes = [IsBenefactor,]
def get(self ,request, task_id):
obj = Task.objects.get(id=task_id)
if not obj:
raise Http404("not found")
if obj.state==obj.TaskStatus.PENDING:
data={
'detail': 'This task is not pending.'
}
return Response(data , status=status.HTTP_404_NOT_FOUND)
else:
obj.assign_to_benefactor(self , obj.assigned_benefactor)
obj.save()
data={
'detail': 'Request sent.'
}
return Response(data , status=status.HTTP_200_OK)
我的视图代码获取对象如果不可用返回 404 错误如果可用并且状态等于 PENDING 返回一些数据,否则将状态更改为等待并分配给恩人用户但是我的代码不起作用我该怎么办?和我的模型:
class Task(models.Model):
class TaskStatus(models.TextChoices):
PENDING = 'P', 'Pending'
WAITING = 'W', 'Waiting'
ASSIGNED = 'A', 'Assigned'
DONE = 'D', 'Done'
title = models.CharField(max_length=60)
state = models.CharField(
max_length=1,
default=TaskStatus.PENDING,
choices=TaskStatus.choices,
)
charity = models.ForeignKey(Charity, on_delete=models.CASCADE)
description = models.TextField(blank=True)
assigned_benefactor = models.ForeignKey(
Benefactor,
on_delete=models.SET_NULL,
null=True,
)
date = models.DateField(null=True, blank=True)
age_limit_from = models.IntegerField(null=True, blank=True)
age_limit_to = models.IntegerField(null=True, blank=True)
gender_limit = models.CharField(
max_length=2,
choices=User.Gender.choices,
default=User.Gender.UNSET,
)
def assign_to_benefactor(self, benefactor):
self.state = Task.TaskStatus.WAITING
self.assigned_benefactor = benefactor
self.save()
解决方案
task.assign_to_benefactor(request.user.benefactor)
推荐阅读
- ignite - Does Ignite support GPB serialized data
- python - 用于 CRUD 的 Django REST API 一个端点
- wpf - WPF文本框,无法编辑文本……快要放弃了
- sas - 从 sas 中的 char 变量中删除特定字符串
- android - 寻找有关如何创建这两个浮动操作按钮外观按钮的指导
- android - Android Emulator Wear OS P - There's an internal problem with your device
- vba - 将 Sheet1 和 Sheet2 中的值复制粘贴到上传工作表中
- python - Python regex: Get regex pattern in a text file and store in an array or list
- amazon-web-services - 如何使用 CloudFormation 将 RDS 错误日志发布到 CloudWatch?
- java - Unable to add a logic to sort with dates in the existing comparator in Java/android