Metadata-Version: 2.1
Name: drf-nested-browsable
Version: 0.4.1
Summary: Writable nested serializers with forms for the Browsable API
Home-page: https://pierre-couy.dev/projects/drf-nested-browsable.html
License: MIT
Keywords: django,rest framework,drf,browsable api,nested serializers
Author: Pierre Couy
Author-email: contact@pierre-couy.dev
Requires-Python: >=3.10,<4.0
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: django (>=4.2,<6.0)
Requires-Dist: djangorestframework (>=3.14.0,<4.0.0)
Requires-Dist: djangorestframework-recursive (>=0.1.2,<0.2.0)
Project-URL: Repository, https://github.com/pcouy/drf-nested-browsable
Description-Content-Type: text/markdown

:warning: Work In Progress :warning:

# Writable Nested Serializers with Browsable API Forms

This plugin is intended to provide writable nested serializers (similar to [the recommended plugin from DRF documentation](https://github.com/beda-software/drf-nested-browsable.git)) that bring their own forms for the Browsable API renderer.

## Try it out

This project's dependencies are managed using [`poetry`](https://python-poetry.org/)

```bash
git clone https://github.com/pcouy/drf-nested-browsable
cd drf-nested-browsable
poetry install
cd example
poetry shell
python manage.py migrate
python manage.py runserver
```

The above commands will install the dependencies, run the DB migrations, and launch a development server of the example project that uses the provided serializers.

## Current state of the project

### Done

* Ability to write to a reverse `ForeignKey` relationship using serializer `Meta` class
* Dynamic form for `WritableNestedListSerializer` that allows adding and removing children from the Browsable API
* Arbitrary nesting depth
* Dynamically removing the parent field from serializers when used as an inner serializer
* Basic example
* Support `RecursiveField` from
  [`djangorestframework-recursive`](https://github.com/heywbj/django-rest-framework-recursive)

### To do

* Write documentation / Auto-generate it from the docstrings ([pdoc](https://pdoc.dev/) ?)
* Write tests/specs (from example ?)
* Better form design
* Add `ManyToMany` to example (and test it)
* Consider database schema constrains :
  * Look into what `drf-writable-nested` does with uniqueness
  * When the foreign key can be `null`, show a multiple select field for attaching orphan instances to a parent instance
  * Show a multiple select field for `ManyToMany` relationships

