2017-11-23 11 views
-1

テーブルT1(テキストで使用されるすべての単語のリスト)とT2(テキストのリスト)があります。DjangoのM2Mとして毎年作成されたテーブル

私はT1に外部キーを持つ別のテーブルT3を作成し、T3でM2Mとして動作できるようにT2を作成しました。私はさらに、WordCountと呼ばれる別の列を追加するので、models.ManyToManyフィールドでこのテーブルを作成することはできません! Django ORMの多数から多数の制約を使用してT1からT2にアクセスできますか?

答えて

0

私はあなたの多くのモデルにあなたの多くで"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) 
関連する問題