Django学習ノート(5)---ForeignKey


ForeignKeyはDjangoでMany-to-Oneタイプ、つまり複数のオブジェクトが1つのオブジェクトにバインドされているという意味です
まず例を見てみましょう
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のオブジェクトのいずれかが削除されると,この関係は自動的に解除されるが,ここで挙げた例はうまく解釈できない.
転載は出典を明記してください.ありがとうございます.