[Django] ManyToMany



Django ManyToManyField
n:n(複数対複数)関係のデータテーブルの場合は、Junctionテーブルを作成する必要があります.
Django modlesは
  • Junctionテーブルを直接生成します.pyで新しいクラスを宣言するか、
  • ManyToManyFieldを使用する方法があります.
    2–1)ManyToManyFiledのみを使用します.
    2)ManyToManyFieldに関連する名前を指定する場合があります.
  • ManyToManyFieldの場合、1)のようにclassを単独で宣言してテーブルを作成する必要はなく、データを入力するだけでdjangoでマルチペアマルチ接続を実現できます.
    ManyToMany
    ManyToMany Fieldを使用してJunction Tableを作成する場合、テーブルが他の機能ではなく、参照機能としてのみ使用される場合は、自分で作成するだけです.
    a1 = Actor.objects.get(id = 1)
    a1.save()
    m1 = Movie.objects.get(id = 1)
    m1.save()
    a1.movie.add(m1, m2, m3)

    ManyToMany + through =
    私が別途宣言したclassを使用して接続テーブルを作成する場合は、throughを使用して接続できます.(接続テーブルはカスタムコンセプトとして使用できます)
    整数値のみで構成されたテーブルではなく、接続テーブルを他のロールとして使用します.
    ManyToMany + related_name
    ManyToManyField(“Movie”,related name=“actors”).
    逆参照関係でもmovieactor_set.all() > movie.actors.全部使えます.