2014-03-26 3 views
0

Вот мой код:Как сохранить две модели, связанные с OneToOne в Django?

from django.db import models 
    from django.contrib.auth.models import User 

    class Person(models.Model): 

     user    = models.OneToOneField(User, primary_key=True) 
     title    = models.CharField(max_length=3, choices=PERSON_TITLE_CHOICES) 
     first_name   = models.CharField(max_length=100) 

В общем, что я хочу сделать, когда я регистрацию нового пользователя, я хотел бы сохранить модель Person, уже с отношением к пользователю.

ответ

0

У вас есть два варианта. Вы можете либо зарегистрировать крюк после сохранения для пользователя и создать там своего Лица, либо создать их вместе. Я делаю последнее. Просто убедитесь, что вы завернули их в транзакцию, поэтому если один из них не работает, то другой:

with django.db.transaction.commit_on_success(): 
    user = User(...) 
    user.save() 
    person = Person(user = user, ...) 
    person.save() 
Смежные вопросы