django admin - You don't have permission to edit anything

Answering my question here. So the problem was, PermissionsMixin. What I thought was that PermissionsMixin will handle all the permssion related things. But even though I added the PermissionsMixin to the new user Model, I had to explicitly make the tell django that the superuser is indeed superuser by adding is_superuser or by has_perm.

So I changed my function inside the User manager to

def create_superuser(self, email, first_name, last_name, username, date_of_birth, password, **kwargs):
        user = self.create_user(
            email,
            first_name=first_name,
            last_name=last_name,
            username=username,
            date_of_birth=date_of_birth,
            password=password,
            is_superuser=True,
            **kwargs
        )

Hope this will help someone like me!