Добавление таблицы пользователей / учетных записей в Postgres в Django View

Перейти к редактированию 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, любые идеи

В сундук!

5
задан Chris 20 November 2011 в 19:52
поделиться