#database #django #sqlite #foreign-keys #primary-key
#База данных #django #sqlite #внешние ключи #первичный ключ
Вопрос:
В моей базе данных SQLite есть 3 таблицы: пользователь, учетные записи, пароли. Идентификатор учетных записей и паролей является внешним ключом для User.id . Проблема в том, что экземпляр User не имеет идентификатора, пока он не будет сохранен (и django добавляет основное поле). Вот как я пытаюсь это сделать, поскольку User.email должен быть уникальным, тогда я должен вернуть только один объект, но он не работает. Я уверен, что есть лучший способ сделать это.
tl; dr Когда я создаю пользователя, я также хочу, чтобы для них была создана таблица учетных записей и паролей, связанная с помощью внешнего ключа id, который также является основным ключом.
def adduser(request):
u = User(email=request.POST['email'], username=request.POST['username'], password=request.POST['password'])
a = Accounts()
u.save()
u = User.objects.get(email=request.POST['email'])
a.id = u.id
a.save()
Ответ №1:
Это намного ближе к тому, что вы хотите.
def adduser(request):
u = User(email=request.POST['email'], username=request.POST['username'], password=request.POST['password'])
u.save()
a = Accounts(
user=u
)
a.save()
- Используете ли вы пользовательскую модель django?
если это так, вы действительно хотите этого:
def adduser(request):
u = User(email=request.POST['email'], username=request.POST['username'])
u.set_password(request.POST['password'])
u.save()
a = Accounts(
user=u
)
a.save()
Кроме того, вместо использования запроса.РАЗМЕЩАЙТЕ переменные везде, рассматривали ли вы возможность использования форм django и утилит form? Они довольно хороши.
Комментарии:
1. Кажется, это только 1.3, и у меня была куча проблем с 1.3, поэтому теперь я использую 1.2.7: (
2. В ответе Issac ничего нет только для 1.3.