Поля идентификатора пользователя Django - PullRequest
4 голосов
/ 01 августа 2011

Я создаю новый объект User, используя следующий код:

user = User(username=new_data['username'], email=new_data['email'], first_name=new_data['email'])
user.save()
user_id = user.id

Теперь мне нужно извлечь идентификатор пользователя в переменную с именем user_id.Однако, когда я делаю это, user_id имеет значение «Nothing».Однако когда я просматриваю базу данных, я вижу вновь созданную запись пользователя в базе данных.

Как я могу получить идентификатор записи пользователя?

Ответы [ 3 ]

3 голосов
/ 01 августа 2011

Попробуйте

user_id = user.pk

вместо

user_id = user.id

2 голосов
/ 01 августа 2011

Если вы хотите создать пользователя, вы можете попробовать следующее:

user = User.objects.create_user(username=new_data['username'], email=new_data['email'])
print user.pk #Already works as create_user saves the new instance.
user.first_name = new_data['email'] #Can't assign to first_name in create_user.
user.save()
print user.pk #Will work.

Кстати, это также нормализует адрес электронной почты и все.

Если вам нужно назначить другие параметры, такие как имя, просто используйте пользовательскую переменную, присвойте этим значениям и затем сохраните.

Вы должны прочитать о менеджерах моделей, если вам нужна дополнительная информация по этому вопросу.

0 голосов
/ 02 августа 2011

Это не относится к django, но посмотрите, как SQLAlchemy обрабатывает PostgreSQL RETURNING:

http://www.sqlalchemy.org/docs/dialects/postgresql.html#insert-update-returning

Я не знаю, как можно заставить ORM Джанго использовать это, но SQLA использует pscopg2 для получения поддержки RETURNING.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...