Django学習ノート(5)---ForeignKey
1506 ワード
ForeignKeyはDjangoでMany-to-Oneタイプ、つまり複数のオブジェクトが1つのオブジェクトにバインドされているという意味です
まず例を見てみましょう
モデルに外部キーとマルチペアマルチフィールドがある場合は、作成時に外部キーをバインドして保存してから、マルチペアマルチフィールドを追加する必要があります.
たとえば
上記のコードに従って、gオブジェクトはu 1オブジェクトにバインドされ、u 1が呼び出されると、gオブジェクトはu 1オブジェクトにバインドされる.delete()の場合、gオブジェクトも削除されます!!!
さらに、オブジェクト間の関連付けを確立する方法もあります.
この方法は,前の関係構造よりも明確であるが,操作に必要な文がより多い.すなわち,UserとGroupのオブジェクトのいずれかが削除されると,この関係は自動的に解除されるが,ここで挙げた例はうまく解釈できない.
転載は出典を明記してください.ありがとうございます.
まず例を見てみましょう
from django.db import models
class User(models.Model):
name = models.CharField(max_length=30)
class Group(models.Model):
name = models.CharField(max_length=30)
owner = models.ForeignKey(User)
member = models.ManyToMany(User)
モデルに外部キーとマルチペアマルチフィールドがある場合は、作成時に外部キーをバインドして保存してから、マルチペアマルチフィールドを追加する必要があります.
たとえば
from models import User,Group
# save() ,
u1 = User()
u1.name = 'ZhangSan'
u1.save()
# ,
u2 = User.objects.create(name='LiSi')
g = Group()
g.name = "My group"
g.owner = u1
g.save() # save , Group primary_key
g.member.add(u2)
上記のコードに従って、gオブジェクトはu 1オブジェクトにバインドされ、u 1が呼び出されると、gオブジェクトはu 1オブジェクトにバインドされる.delete()の場合、gオブジェクトも削除されます!!!
さらに、オブジェクト間の関連付けを確立する方法もあります.
from django.db import models
class User(models.Model):
name = models.CharField(max_length=30)
class Group(models.Model):
name = models.CharField(max_length=30)
member = models.ManyToMany(User,through='Friendship')
class Friendship(models.Model):
# through Group User , Friendship
owner = medels.ForeignKey(User)
group = medels.ForeignKey(Group)
この方法は,前の関係構造よりも明確であるが,操作に必要な文がより多い.すなわち,UserとGroupのオブジェクトのいずれかが削除されると,この関係は自動的に解除されるが,ここで挙げた例はうまく解釈できない.
転載は出典を明記してください.ありがとうございます.