2017-03-22 30 views
0

私はDjangoを使用しています。 UserモデルとOneToOneの関係にあるユーザーのプロファイルをどのようにクエリできますか。ここに私のコードは次のとおりです。Django - OneToOneFieldを持つユーザーモデルに基づいてユーザープロファイルを照会する方法

models.py:

class User(models.Model): 

    email = models.EmailField(unique=True, null=True) 
    date_joined = models.DateTimeField(default=datetime.now) 
    username = models.CharField(max_length=22) 

class UserProfile(models.Model): 

    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    company_name = models.CharField(max_length=500) 
    contact_person = models.CharField(max_length=255) 
    country = models.CharField(max_length=100) 
    city = models.CharField(max_length=100) 

は、ユーザーのサインアップした場合、検証後、彼のプロフィールを記入します。どのようにすれば、特定のユーザのUserProfile情報であるかをviews.pyによってデータベースに問い合わせることができます。例えば[email protected]の電子メールを持っているユーザのcompany_nameや国は何か

ちょっと参考にして、Djangoのユーザに関する追加情報を取得するのがベストプラクティスですか?

答えて

0

ユーザーを取得し、そのようにそののUserProfileを使用することができます。

# Make sure you create a UserProfile when you create a new User 
user = User.objects.get(email='[email protected]') 
user.userprofile.company_name 
user.userprofile.country 

はい、これはデフォルトのDjangoのUserモデルに余分なフィールドを追加するための推奨方法です。 this質問を参照してください。独自のUserモデルを使用している場合は、UserProfileフィールドをUserモデルに追加するだけです。

関連する問題