如何在Django中保存与OneToOne相关的两个模型?

时间:2014-03-26 16:55:26

标签: django django-models one-to-one

这是我的代码:

    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模型,已经与用户有关系了。

1 个答案:

答案 0 :(得分:0)

这里有两种选择。您可以为User注册保存后挂钩并在那里创建您的Person,也可以一起创建它们。我做后者。只需确保将它们包装在一个事务中,这样如果一个失败,另一个也会:

with django.db.transaction.commit_on_success():
    user = User(...)
    user.save()
    person = Person(user = user, ...)
    person.save()