﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
29522	Make Serializers easier to modify.	Levi Cameron	Amir Karimi	"**Use case**

Three times now I've had need to modify the ORM serializers for project use. In some cases I've had to replicate large parts (if not most) of `django.core.serializers.python` in order to change 1 or 2 lines because certain calls to functions in `django.core.serializers.base` from the serializers are hardcoded.

* Changing JSON serialization to output in alphabetical order (so that `dumpdata` doesn't reorder every field each time you run it)
* Changing deserialization to use `_base_manager` instead of `_default_manager` (due to extra constraints on a custom manager)
* Implementing fixes for #7202, #7350 before they were merged

**Proposal**
I propose that instead of calling the following functions directly, the serializer classes are modified to call an instance method of the same name that then calls the existing module-level functions. This would allow the ability to more easily override just one aspect of serializer functionality without having to replicate large swathes of code.

I am not proposing to move these functions into the python serializer class directly because this may break compatibility with existing code that depends on the existing functions.

* `django.core.serializers.base.build_instance`
* `django.core.serializers.base.deserializer_m2m_values`
* `django.core.serializers.base.deserializer_fk_values`
* `django.core.serializers.python._get_model` (given that this is already an internal function, implementation can be pushed into the class directly)

(It might also be nice if the `json` and `pyyaml` classes could also have `PythonDeserializer` be made a class attribute but that would involve turning the `Deserializer` function into a class and is not nearly as much code to override these as the functions above)


If this sounds acceptable, I will submit a patch."	Cleanup/optimization	closed	Core (Serialization)	dev	Normal	fixed		Herbert Fortes Ian Foote Ülgen Sarıkavak	Ready for checkin	1	0	0	0	0	0
