I’ve started this discussion to get feedback for my proposal for the project: Database-level Cascades Functionality to Django ORM. I have never contributed to any of the official Django projects earlier but I have experience using the framework for last 2 years. In this discussion I would like to propose a high level view of how this can be implemented, any kind of feedback and reference to resources for a more detailed and clear perspective about the project from your side would be very much appreciated,
Based on my study it seems quite straightforward and simple to implement.
- Conduct thorough research and gain an understanding of the existing discussions, pull requests, and issues associated with adding support for database-level cascading options in the Django web framework.
- Specify the requirements for the new feature, including its name and behavior, and determine whether it should be a new option (on_delete_db) or a modification of the existing one (on_delete).
- Develop a ForeignKey subclass that sets a flag indicating that the database should manage the cascading options.
- Modify the DatabaseSchemaEditor’s add_field() and sql_create_fk() methods to recognize the flag and generate SQL accordingly for the specific database backend.
- Ensure that the implementation performs as intended when tested for a single database backend. Then, generalize the implementation so that it works for all supported database backends, generating appropriate SQL for each.
- Integrate the implementation with the Django migrations framework to ensure proper handling of database-level cascading options during schema migrations.
- Write tests to verify that the new feature functions correctly and does not interfere with existing functionality.
- Submit one or more pull requests containing the changes, and collaborate with the Django community to address any feedback or issues that may arise.
Here is a link to my proposal : Database-level Cascades Proposal - GSoC '23 - Google Docs
Due to my beginner level understanding of the codebase there is a lot of scope room for improvement. Your suggestions willbe of great help.