2013-11-20 48 views
2

我寫了一個自定義的保存方法,我的模型方法:自定義保存在Django模型和登錄問題

class UserProfile(User): 
     sex = models.SmallIntegerField(verbose_name=_(u'Sex'), choices=SEX_TYPES, default=1) 
     . 
     . 


    def save(self, **kwargs): 
     if self.pk is not None: 
      UserSettings.objects.create(
       user_id = self.pk 
      ) 
     super(UserProfile, self).save(**kwargs) 

和:

class UserSettings(models.Model): 
    user = models.ForeignKey('userprofile.UserProfile', verbose_name=_(u"User"), related_name='own_user', null=True, blank=True) 

    def __unicode__(self): 
     return unicode(self.id) 

這種自定義的方法創建一個UserSettings對象(寄存器) 。但login後,另一個UserSettings創建。 如何避免此問題?

回答

2

使用get_or_create

def save(self, **kwargs): 
    settings, created = UserSettings.objects.get_or_create(
     user_id=self.pk 
    ) 
    super(UserProfile, self).save(**kwargs)