テーブルT1(テキストで使用されるすべての単語のリスト)とT2(テキストのリスト)があります。DjangoのM2Mとして毎年作成されたテーブル
私はT1に外部キーを持つ別のテーブルT3を作成し、T3でM2Mとして動作できるようにT2を作成しました。私はさらに、WordCountと呼ばれる別の列を追加するので、models.ManyToManyフィールドでこのテーブルを作成することはできません! Django ORMの多数から多数の制約を使用してT1からT2にアクセスできますか?
テーブルT1(テキストで使用されるすべての単語のリスト)とT2(テキストのリスト)があります。DjangoのM2Mとして毎年作成されたテーブル
私はT1に外部キーを持つ別のテーブルT3を作成し、T3でM2Mとして動作できるようにT2を作成しました。私はさらに、WordCountと呼ばれる別の列を追加するので、models.ManyToManyフィールドでこのテーブルを作成することはできません! Django ORMの多数から多数の制約を使用してT1からT2にアクセスできますか?
私はあなたの多くのモデルにあなたの多くで"through"
属性が必要だと思う:
ここで私は、このリンクからもらった簡単な例です:あなたがここにそれについての詳細を見つけることができます
https://gist.github.com/jacobian/827937
:
をhttps://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.ManyToManyField.through
この例では、多くのグループに関連しています。しかし、関係上のいくつかの追加フィールドが必要なので、Group Memberというスルーモデルを作成します。 intemediateモデルのGroupMemberには、PersonとGroupの両方に対する外部キーと、必要なその他のフィールドがあります。
DjangoのORMは、このようなモデルを書くときの制約を処理します。
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=200)
groups = models.ManyToManyField('Group', through='GroupMember', related_name='people')
class Meta:
ordering = ['name']
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=200)
class Meta:
ordering = ['name']
def __unicode__(self):
return self.name
class GroupMember(models.Model):
person = models.ForeignKey(Person, related_name='membership')
group = models.ForeignKey(Group, related_name='membership')
type = models.CharField(max_length=100)
def __unicode__(self):
return "%s is in group %s (as %s)" % (self.person, self.group, self.type)