Django Chain Models¶
django_chain.mixins
¶
Mixins for reusable view logic in django-chain.
This module provides mixins for JSON response handling, model CRUD operations, and activation/deactivation patterns to be used in Django class-based views throughout django-chain.
Typical usage example
class MyView(JSONResponseMixin, ModelListMixin, View): ...
JSONResponseMixin
¶
Mixin to render a response as JSON. Handles serialization of data and consistent error responses.
render_json_response(data=None, status=200, safe=True)
¶
Renders data as a JSON response.
safe=False is needed if the top-level object is a list.
Parameters:
-
data(dict, default:None) –Data to serialize. Defaults to None.
-
status(int, default:200) –HTTP status code. Defaults to 200.
-
safe(bool, default:True) –Whether to allow non-dict top-level objects. Defaults to True.
Returns:
-
JsonResponse(JsonResponse) –The JSON response.
json_error_response(error_message, status=400)
¶
Returns a consistent JSON error response.
Parameters:
-
error_message(str | dict) –The error message or dict of errors.
-
status(int, default:400) –HTTP status code. Defaults to 400.
Returns:
-
JsonResponse(JsonResponse) –The JSON error response.
dispatch(request, *args, **kwargs)
¶
Apply csrf_exempt to all methods in views inheriting this mixin. Also attempts to load JSON body for POST/PUT methods.
Parameters:
-
request(HttpRequest) –The HTTP request object.
-
*args–Additional arguments.
-
**kwargs–Additional keyword arguments.
Returns:
-
HttpResponse–The response from the view.
ModelRetrieveMixin
¶
Mixin for retrieving a single model instance by its primary key (pk).
Requires: model_class, serializer_method.
get_object(pk)
¶
Retrieve a model instance by primary key.
Parameters:
-
pk(Any) –The primary key value.
Returns:
-
Any(Any) –The model instance or None if not found.
ModelListMixin
¶
Mixin for listing model instances with optional filtering.
Requires: model_class, serializer_method.
get_queryset(request)
¶
Get a queryset of all model instances.
Parameters:
-
request(HttpRequest) –The HTTP request object.
Returns:
-
QuerySet(Any) –The queryset of model instances.
apply_list_filters(queryset, request)
¶
Apply filters to the queryset. Override in subclasses.
Parameters:
-
queryset(QuerySet) –The queryset to filter.
-
request(HttpRequest) –The HTTP request object.
Returns:
-
QuerySet(Any) –The filtered queryset.
ModelCreateMixin
¶
Mixin for handling POST requests to create new model instances.
Requires: model_class, serializer_method.
create_object(request_data)
¶
Create a new model instance from request data.
Parameters:
-
request_data(dict) –Data for the new instance.
Returns:
-
Any(Any) –The created model instance.
ModelUpdateMixin
¶
Mixin for handling PUT requests to update existing model instances.
Requires: model_class, serializer_method.
update_object(obj, request_data)
¶
Update an existing model instance with request data.
Parameters:
-
obj(Any) –The model instance to update.
-
request_data(dict) –Data to update the instance with.
Returns:
-
Any(Any) –The updated model instance.
ModelDeleteMixin
¶
Mixin for handling DELETE requests to delete model instances.
delete_object(obj)
¶
Delete a model instance.
Parameters:
-
obj(Any) –The model instance to delete.
ModelActivateDeactivateMixin
¶
Bases: JSONResponseMixin, ModelRetrieveMixin
Mixin for handling activation/deactivation of models with an 'is_active' field.
Requires: model_class, serializer_method.
post(request, pk, action)
¶
Activate or deactivate a model instance.
Parameters:
-
request(HttpRequest) –The HTTP request object.
-
pk(Any) –The primary key of the instance.
-
action(str) –'activate' or 'deactivate'.
Returns:
-
JsonResponse(Any) –The response with the updated instance or error.