diff --git a/apps/blog/api/views.py b/apps/blog/api/views.py index d48f31f..1973973 100644 --- a/apps/blog/api/views.py +++ b/apps/blog/api/views.py @@ -343,10 +343,14 @@ def _validate_category_parent(category_id: int | None, parent_id: int | None) -> return None, None if category_id and parent_id == category_id: return None, "A category cannot be its own parent." + if category_id and Category.objects.filter(parent_id=category_id).exists(): + return None, "A category with child categories must remain a root category." parent = Category.objects.filter(id=parent_id).first() if not parent: return None, "Parent category not found." + if parent.parent_id: + return None, "Only root categories can be selected as a parent." current = parent seen: set[int] = set()