Django一次多重更新任务
我拥有我的Django网站,可以在其中创建任务,并在任务下进行子任务,我的标记完整选项正常,我需要在批处理中完成它们,例如一次选择多个任务并完成它们。
serializer.py :
class TaskCompleteSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = (
'is_done',
)
def update(self, instance, validated_data):
person = self.context['request'].user.person
task_is_done = validated_data.get('is_done', False)
if task_is_done:
instance.subtasks.update(is_done=True)
instance.is_done = task_is_done
instance.done_by.set([person])
instance.save()
return instance
views.py :
class TaskUpdateAPIView(UpdateAPIView):
permission_classes = " "
serializer_class = TaskCompleteSerializer
queryset = Task.objects.all()
model = Task
lookup_url_kwarg = 'task_id'
urls.py
path('<int:task_id>/complete/',views.TaskUpdateAPIView.as_view(),
name='task_update'),
型号
class Task(BaseModel):
name = models.CharField(max_length=255)
done_by = models.ManyToManyField(
User,
related_name='tasks_completed',
blank=True,
)
is_done = models.BooleanField(default=False)
class Subtask(models.Model):
name = models.CharField(max_length=255)
subtask_of = models.ForeignKey(
Task,
related_name='subtasks',
blank=True,
null=True,
on_delete=models.CASCADE,
)
I have my Django website where i can have tasks created and subtasks under tasks i have mark complete option which is working fine i need them to be completed in batch like selecting multiple tasks at once and complete them.
serializers.py:
class TaskCompleteSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = (
'is_done',
)
def update(self, instance, validated_data):
person = self.context['request'].user.person
task_is_done = validated_data.get('is_done', False)
if task_is_done:
instance.subtasks.update(is_done=True)
instance.is_done = task_is_done
instance.done_by.set([person])
instance.save()
return instance
views.py:
class TaskUpdateAPIView(UpdateAPIView):
permission_classes = " "
serializer_class = TaskCompleteSerializer
queryset = Task.objects.all()
model = Task
lookup_url_kwarg = 'task_id'
urls.py
path('<int:task_id>/complete/',views.TaskUpdateAPIView.as_view(),
name='task_update'),
models.py
class Task(BaseModel):
name = models.CharField(max_length=255)
done_by = models.ManyToManyField(
User,
related_name='tasks_completed',
blank=True,
)
is_done = models.BooleanField(default=False)
class Subtask(models.Model):
name = models.CharField(max_length=255)
subtask_of = models.ForeignKey(
Task,
related_name='subtasks',
blank=True,
null=True,
on_delete=models.CASCADE,
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为您可以改变批量更新的路径。
在urls.py
和views.py中,您可以自定义
put
用于更新请求的方法。在最新情况下,当您更新一个对象时,应设置API URL,例如
.../1/完整/
。当您更新多个对象时,API URL可以是
.../1,2,3/完整/
。I think you can change the path for bulk update.
In urls.py,
And in views.py, you can customize
put
method for update request.In frontend, when you update one object, the api url should be set like
.../1/complete/
.When you update multiple objects, the api url can be
.../1,2,3/complete/
.您可以使用
bulk_update
You can use
bulk_update