代码之家  ›  专栏  ›  技术社区  ›  alioguzhan

Django-如何在用户创建[重复]时创建额外的对象

  •  -1
  • alioguzhan  · 技术社区  · 13 年前

    可能重复:
    Creating a extended user profile

    这是我的用户模型部分:

     27 class Profile(models.Model):
     28     owner = models.OneToOneField(User)
     29     title = models.CharField(max_length=20,blank=True)
     30     slogan = models.TextField(blank=True)
     31     twitter = models.URLField(blank=True)
     32     web_site = models.URLField(blank=True)
     33     email = models.EmailField(blank=True)
     34 
     35     def create_user(sender,instance,created,**kwargs):
     36         if created:
     37             Profile.objects.create(owner=instance)
     38     post_save.connect(create_user, sender=User)
     39     
     40     def __unicode__(self):
     41         return self.owner.username
    

    在这种情况下;当我创建一个用户时;然后我必须为刚刚创建的用户创建一个配置文件。

    我想自动做到这一点。用户;必须在创建配置文件页时创建自己的配置文件页。

    非常感谢。

    edit:所有字段都为空=True;所以只创建一个属于用户的空白配置文件对象就足够了。

    1 回复  |  直到 9 年前
        1
  •  3
  •   Chris Pratt    13 年前

    这在 documentation 。你使用信号。他们甚至给出了一个完整的例子:

    # in models.py
    
    from django.contrib.auth.models import User
    from django.db.models.signals import post_save
    
    # definition of UserProfile from above
    # ...
    
    def create_user_profile(sender, instance, created, **kwargs):
        if created:
            UserProfile.objects.create(user=instance)
    
    post_save.connect(create_user_profile, sender=User)
    
    推荐文章