Django でモデルを定義する場合、 を使用してOneToOneField
1 対 1 の関係を確立できます。この関係は 2 つのモデル間の特別な種類の関連付けを表しており、一方のモデルのインスタンスは他方のモデルのインスタンスにのみ関連付けることができます。
簡単な例で使い方を説明しましょうOneToOneField
。User
と の2 つのモデルを含む単純なブログ アプリを構築しているとしますProfile
。各ユーザーはプロファイルを持つことができます。OneToOneField
ユーザーとプロファイルの間に 1 対 1 の関係を確立するために使用します。
まず、Djangomodels
モジュールをインポートし、モデル クラスを定義する必要があります。簡単な例を次に示します。
from django.db import models
class User(models.Model):
username = models.CharField(max_length=50)
email = models.EmailField(unique=True)
# 其他字段...
def __str__(self):
return self.username
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField()
profile_pic = models.ImageField(upload_to='profiles/')
# 其他字段...
def __str__(self):
return self.user.username
上記のコードでは、Profile
モデルはモデルOneToOneField
との関係を確立するために使用します。User
これは、各Profile
インスタンスは 1 つのインスタンスにのみ関連付けることができUser
、各User
インスタンスはProfile
1 つのインスタンスにのみ関連付けることができることを意味します。
Profile
モデルでは、user
フィールドはUser
モデルと 1 対 1 の関係を定義します。on_delete=models.CASCADE
カスケード削除が指定されています。つまり、User
インスタンスに関連付けられているインスタンスProfile
が削除されると、関連するUser
インスタンスも削除されます。
モデルを定義したら、これらのモデルを使用して、データの作成、読み取り、更新、削除などのデータベース操作を実行できます。リレーションシップを使用した操作の例をいくつか示しますOneToOneField
。
# 创建一个用户
user = User(username='john', email='[email protected]')
user.save()
# 创建用户的个人资料
profile = Profile(user=user, bio='Hello, I am John.', profile_pic='john.jpg')
profile.save()
# 通过用户获取个人资料
user_profile = user.profile
# 通过个人资料获取用户
profile_user = profile.user
# 更新个人资料
profile.bio = 'I am John Doe.'
profile.save()
# 删除用户的个人资料
profile.delete()
# 删除用户
user.delete()
OneToOneField
上記の例は、 を使用してモデル間に 1 対 1 の関係を確立し、関連するデータベース操作を実行する方法を示しています。この関係により、モデル間の双方向の関連付けを簡単に確立し、必要に応じてさまざまなデータベース操作を実行できます。