AttributeError: объект 'AnonymousUser' не имеет атрибута '_meta' Каналы Django

Я пытаюсь залогинить пользователей в каналах django и он бросает

AttributeError: 'AnonymousUser' object has no attribute '_meta'

Мой потребитель

class LoginConsumer(AsyncJsonWebsocketConsumer):
    async def connect(self):
        self.room_name = "login_room"
        self.room_group_name = "login_group"
        await self.channel_layer.group_add(self.room_group_name, self.channel_name)
        await self.accept()
        await self.send(json.dumps({"message": "connected to login socket"}))

    async def receive(self, text_data):
        self.json_data = json.loads(text_data)

        await login(self.scope, await self.query())
        await database_sync_to_async(self.scope["session"].save)()

    async def query(self):
        await self.get_user_from_db()

    @database_sync_to_async
    def get_user_from_db(self):
        user = User.objects.get(username=self.json_data["username"])
        return user

    async def disconnect(self, code):
        print("disconnected")
        await super().disconnect(code)

Мой вид входа

def login_user(request):
    if request.user.is_anonymous:
        if request.method == "POST":
            username = request.POST.get("username")
            password = request.POST.get("password")
            user = authenticate(username=username, password=password)
            if user is not None:
                login(request, user)
                return redirect("index")
            else:
                messages.error(request, "invalid username or password")
                return redirect("login")
        return render(request, "login.html")
    else:
        return redirect("index")

Мой js файл

const username = document.querySelector(".username");
const password = document.querySelector(".password");
const socket = new WebSocket("ws://localhost:8000/ws/auth/login");
const button = document.querySelector("button");
button.addEventListener("click", (e) => {
  if (password.value !== "" && username.value !== "") {
    socket.send(
      JSON.stringify({
        username: username.value,
        password: password.value,
      })
    );
  }
});

Full Traceback:

Эта ошибка возникает на потребителе, а не на представлении

Вернуться на верх