2010-09-24 72 views
0

我使用UserProfile模型來保存有關用戶的其他信息,其中一個字段是默認情況下應該設置爲用戶名的子域變量。這裏是UserProfile模型:從用戶實例字段設置默認值到UserProfile模型字段

class UserProfile(models.Model): 
    theme = models.ForeignKey(Theme, unique=True, null=True) 
    user = models.ForeignKey(User, unique=True) 
    subdomain = models.CharField(default=self.user.username, max_length=30) 

我實現了Django信號功能,在用戶創建時自動創建UserProfile模型實例。現在我需要將子域名變量設置爲用戶名。我怎樣才能做到這一點?

回答

1

由於您使用信號自動創建UserProfile,因此您可以明確將User實例的username設置爲UserProfile子域。對於例如

def create_user_profile(sender, instance, **kwargs): 
    profile = UserProfile(user = instance, subdomain = instance.username, ...) 
    profile.save() 

另一種方式做,這將是覆蓋save()方法,例如,如果沒有子域提供,你可以將其設置爲user.username

+0

完美的作品,謝謝! – 2010-09-24 11:08:03

相關問題