Можно ли добавить данные во вложенные, просто используя их UUID?
Я совсем новичок в DRF и пытаюсь построить систему с Document и Category. Вот models.py для этого
class TimeStampedModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Document(TimeStampedModel):
unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
title = models.CharField(max_length=50, blank=True, default="")
description = models.TextField(blank=True, default="")
image = models.ImageField(blank=True, null=True)
category = models.ForeignKey(
'Category',
on_delete=models.SET_NULL,
related_name='documents',
blank=True,
null=True,
)
class Meta:
ordering = ("-created_at",)
class Category(TimeStampedModel):
unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
name = models.CharField(max_length=50, blank=True, default="")
description = models.TextField(blank=True, default="")
class Meta:
ordering = ("-created_at",)
def __str__(self):
return self.name
И Serializes.py
class DocumentViewSet(ModelViewSet):
serializer_class = DocumentSerializer
queryset = Document.objects.all()
lookup_field = "unique_id"
@action(detail=True, methods=['delete'])
def delete_document(self, request, unique_id):
"""Delete document"""
docs = Document.objects.get(unique_id=unique_id)
try:
docs.delete()
return Response(status=status.HTTP_204_NO_CONTENT,
data={'message': f'Delete successfully with {docs.unique_id}'})
except:
return Response(data={'message': f'Delete failed with {docs.unique_id}'})
class CategoryViewSet(ModelViewSet):
serializer_class = CategorySerializer
queryset = Category.objects.all()
lookup_field = "unique_id"
filterset_fields = "__all__"
@action(detail=True, methods=['delete'])
def delete_category(self, request, unique_id):
"""Delete category"""
cats = Category.objects.get(unique_id=unique_id)
try:
cats.delete()
return Response(status=status.HTTP_204_NO_CONTENT,
data={'message': f'Delete successfully with {cats.name}'})
except cats.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND,
data={'message': f'Delete failed with {cats.name}'})
Я пытаюсь обновить название категории, описание и добавить документ в категорию, используя UUID документа с помощью этих JSON
{
"name": "Category1",
"description": "Category test",
"documents": ["63149a94-73af-4134-bc13-3270f0c83b4a"]
}
А что бы обновить название и описание категории и документы с этим UUID будут добавлены в нее без редактирования других полей документов, таких как название, описание. Я нашел много способов, но большинство из них заключается в том, что нужно добавить lib документа, включая название и описание документа, чтобы иметь возможность добавить его, который может редактировать документ или только может редактировать имя и описание категории, но UUID документа не может идти в категорию.
Прошу прощения, если это неправильный вопрос, а также прошу прощения за мой английский. Спасибо всем