Как исправить представление register, которое генерирует токен и присваивает его cookie? ошибка django

Здравствуйте, у меня проблемы с созданием представления регистра для моего домашнего задания по django. Я новичок и пытаюсь работать над функциональностью регистрации, и файл представления - это то, где я испытываю трудности. Он должен добавлять нового пользователя в таблицу user в базе данных, а также создавать строку ключа сессии и присваивать ее куки, чтобы пользователь мог оставаться подписанным. Всякий раз, когда я добавляю нового пользователя, он перенаправляется и выдает мне эту ошибку

ValueError: Поле 'id' ожидало число, но получило 'pjtjtksydunpdysgxcxtmpazfyawvqzg' (сгенерированная мной строка)

Вот мой взгляд на регистр

def register(request: HttpRequest):
if request.method == 'POST':
    params = request.POST
    user = User(
        name = params.get("name"),
        email = params.get("email"),
        password_hash = params.get("password")
    )
    hasher = hashlib.sha256()
    hasher.update(bytes(user.password_hash, "UTF-8"))
    user.password_hash = hasher.hexdigest()
    user.save()
    token = ""
    letters = string.ascii_lowercase
    for _ in range(32):
        token = "".join(random.choice(letters) for _ in range(32))
    session_token = Session.objects.create(user=user, token=token)
    response = redirect("/")
    response.set_cookie('token', token)
    return response
return render(request, "destination/register.html")

вот мои модели на случай, если понадобится

class User(models.Model):
    id = models.BigAutoField(primary_key=True)
    name = models.TextField()
    email = models.EmailField(unique=True)
    password_hash = models.TextField()

class Session(models.Model):
    id = models.BigAutoField(primary_key=True)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    token = models.TextField()

register.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="/register" method="POST">
    <label for="">Username</label>
    <input type="text" name="name" id="name">
    <label for="">Email</label>
    <input type="email" name="email" id="email">
    <label for="">Password</label>
    <input type="password" name="password" id="password">
    <button type="submit">Register</button>
</form>
</body>
</html>

Это должно работать, насколько я знаю, но я не уверен, в чем именно проблема. Если кто-то может помочь или направить меня по новому пути, это было бы очень кстати. (Также мой профессор не разрешает использовать встроенные функции аута, сессии или администрирования, поэтому, пожалуйста, не предлагайте их)

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