I am intrigued by the need to keep users logged in only one session.No one keeps track of when I logged into an app and from which tab and all, this will probably result in bad ux, but anyways,
user.is_authenticated() won't work, it keeps track of session of users.
What you can do is either implement a jwt flow by which you can keep track if there is a active jwt token, you can stop person from logging in, or if you want to stck with same default auth by djnago ,
then you can add some fileds like is_logged in user model and when the user tries to login you can check if curr_time-last_login>session age and is_logged in is true,then users won't be allowed to login again.
You can set is logged in false, when user hits logout.
Both ways are tricky.