How to replace django with django_2_2

I would like to use django, djangorestframework and django-auth-ldap packages together. The package django-auth-ldap depends on django_2_2, while djangorestframework depends on django. Using django and djang_2_2 simultaneously results in a collision.

I tried to apply override according to Nixpkgs 23.11 manual | Nix & NixOS chapter “15.17.3.2. How to override a Python package?” without any success.

Can you help me with fixing the following nix expression? Thanks in advance.

with import <nixpkgs> {};
let
  django_packages = [
    python37Packages.django_2_2
    python37Packages.django-auth-ldap
    python37Packages.djangorestframework
    python37Packages.pytest-django
  ];

  python_environment = (
    let
      packageOverrides = self: super: {
        django = super.django_2_2;
      };
    in (python37.override {inherit packageOverrides;}).withPackages (ps: with ps; django_packages)
  );
in
  if pkgs.lib.inNixShell then
    python_environment.env
  else
    python_environment

This expression worked for me:

let
  nixpkgs = import <nixpkgs> {};
  pkgs = import nixpkgs.path { overlays = [ (pkgsself: pkgssuper: {
    python37 =
      let
        packageOverrides = self: super: {
          django = super.django_2_2;
        };
      in pkgssuper.python37.override {inherit packageOverrides;};
  } ) ]; };
in
  let
    django_packages = [
      pkgs.python37Packages.django
      pkgs.python37Packages.django-auth-ldap
      pkgs.python37Packages.djangorestframework
  ];
  in (pkgs.python37.withPackages(ps: with ps; django_packages)).env

…it would be good to know if there is a simpler way of doing this, similar to the original expression.