2016-06-27 9 views
2

プロファイル情報のモデルを作成しようとしています。そのユーザーのユーザー名でdefault_urlにデフォルト値を設定したいとします。どうすればこのことができますか?ユーザオブジェクトのdefault_urlをユーザオブジェクト(Django)に定義します

class UserProfile(models.Model): 
    user = models.OneToOneField('auth.User') 
    default_url = 'https://' + 'get_user_name_here' + '.' + settings.NETWORK_DOMAIN 
    site_url = models.URLField(
     default=default_url, 
     verbose_name='Site URL', 
    ) 

答えて

0

あなたが既に持っていますUserオブジェクトにはOneToOneFieldでアクセスしてください。なぜそこからusernameを取得し、default_urlにしてください代わりに?私のUserProfileクラス内でアクセスするにはどうすればよい

profile = UserProfile.objects.get(user_id=1) 
default_url = profile.default_url 
+0

class UserProfile(models.Model): user = models.OneToOneField('auth.User') site_url = models.URLField( default=default_url, verbose_name='Site URL', ) @property def default_url(self): return 'https://{}.{}'.format(self.user.username, settings.NETWORK_DOMAIN) 

次に、あなたがそうのようなURLにアクセスすることができますか? – l2310p

+0

'self.default_url'モデルの他の変数と同様 – hanleyhansen

0

あなたはDjangoのドキュメントで説明したように、その後

@classmethod 
def create(cls, user, other_attributes): 
    user_profile = cls(url='https://'+user) 
    # do something with the book 
    return user_profile 

https://docs.djangoproject.com/en/1.9/ref/models/instances/)を作成する方法を記述するのUserProfileを作成するためには、単にあなたのメソッドを呼び出すことができます。

user_profile = UserProfile.create("a_username", etc., ...) 
関連する問題