def patch(self, request, task_id): data = request.json_data task = TaskModel.objects.filter(id=task_id) task.update(**data) task = task.select_related('project', 'status', 'doer', 'author') \ .annotate(**aliases) \ .values('id', 'name', *aliases.keys()) return success_response(task=list(task)[0])
def post(self, request): data = request.json_data print(data) task = TaskModel.objects.create(**data) task = TaskModel.objects.select_related('project', 'status', 'doer', 'author') \ .filter(id=task.id) \ .annotate(**aliases) \ .values('id', 'name', *aliases.keys()) return success_response(status=True, task=list(task)[0])
def get(self, request): # Фильтрация будет только по наименованиям # Добавим startswith для каждого параметра filters = {} for field, value in request.GET.items(): filters.update({field + '__startswith': value}) tasks = TaskModel.objects.all() \ .select_related('project', 'status', 'doer', 'author') \ .annotate(**aliases) \ .filter(**filters) \ .values('id', 'name', *aliases.keys()) return success_response(records=list(tasks), totals=tasks.count())
def delete(self, request, task_id): task = self._get_task(task_id) task.delete() return success_response()
def post(self, request, task_id): data = request.json_data print(task_id) task = TaskModel.objects.get(id=task_id) description = task.description.create(text=data.get('text', '')) return success_response(id=description.id)
def get(self, request, task_id): descriptions = DescriptionModel.objects.filter(taskmodel__id=task_id) \ .annotate(taskmodel_id=F("taskmodel__id")) \ .values('text', 'taskmodel_id') return success_response(records=list(descriptions))