Перейти к редактированию 2
Вызов следующей функции adduser в views.py. Сначала я сохраняю пользователя, потому что его идентификатор (автоматически создается Django при INSERT) является первичным / внешним ключом для учетных записей и паролей. Кажется, что добавление пользователя работает нормально, но затем, когда он попадает в учетные записи (user = u)
, возникает следующая ошибка:
IntegrityError at /adduser
insert or update on table "OmniCloud_App_accounts" violates foreign key constraint "user_id_refs_id_468fbcec324e93d2"
DETAIL: Key (user_id)=(4) is not present in table "OmniCloud_App_user".
Но ключ должен быть там, поскольку он только что сохранил пользователя в db ...
def adduser(request):
username = request.POST['username']
password = request.POST['password']
u = User.objects.create_user(username, request.POST['email'], password)
u.save()
a = Accounts(user=u)
p = Passwords(user=u)
a.save()
p.save()
user = authenticate(username=username, password=password)
if user is not None and user.is_active:
auth.login(request, user)
return HttpResponseRedirect("/%s/" %u.id)
else:
return HttpResponseRedirect("/account/invalid/")
РЕДАКТИРОВАТЬ: Вот начало инициализации учетных записей:
from django.db import models
from django.contrib.auth.models import User
class Accounts(models.Model):
user = models.ForeignKey(User)
РЕДАКТИРОВАТЬ 2 Я понял, перейдя на страницу администратора, что когда он жалуется, что 4 не в база данных, потому что она добавляет третьего пользователя. Добавление 4-го пользователя вызывает ошибку, что нет пользователя с идентификатором 5 (да). Я не вижу в коде ничего, что могло бы заставить его искать user_id + 1, любые идеи
В сундук!