2017-10-23 36 views
1

bettlesのメンバーを追加するためのdjangoのドキュメンテーションコードを見てみましょう。多対多の関係djangoに追加

まず私たちは私たちのモデルを持っている:

from django.db import models 

class Person(models.Model): 
    name = models.CharField(max_length=128) 

    def __str__(self):    # __unicode__ on Python 2 
     return self.name 

class Group(models.Model): 
    name = models.CharField(max_length=128) 
    members = models.ManyToManyField(Person, through='Membership') 

    def __str__(self):    # __unicode__ on Python 2 
     return self.name 

class Membership(models.Model): 
    person = models.ForeignKey(Person, on_delete=models.CASCADE) 
    group = models.ForeignKey(Group, on_delete=models.CASCADE) 
    date_joined = models.DateField() 
    invite_reason = models.CharField(max_length=64) 

は、今、私たちは、多くの関係に多くを追加するコードを持っている:

# create a person named ringo 
ringo = Person.objects.create(name="Ringo Starr") 

# create a group named the beatles (terrible band so boring) 

beatles = Group.objects.create(name="The Beatles") 
>>> m1 = Membership(person=ringo, group=beatles, 
...  date_joined=date(1962, 8, 16), 
...  invite_reason="Needed a new drummer.") 
>>> m1.save() 
>>> beatles.members.all() 
<QuerySet [<Person: Ringo Starr>]> 

# what is this doing tho? 

ringo.group_set.all() 
<QuerySet [<Group: The Beatles>]> 

は、同様に私たちは多くの多くを設定する必要があります関係は、Groupモデルで行われますか?

class Group(models.Model): 
    name = models.CharField(max_length=128) 
    members = models.ManyToManyField(Person, through='Membership') 

    def __str__(self):    # __unicode__ on Python 2 
     return self.name 

次に、多対多関係のすべての外部キーを保持しているテーブルに移動し、保存したオブジェクトを追加しますか?

m1 = Membership(person=ringo, group=beatles, 
    date_joined=date(1962, 8, 16), 
    invite_reason="Needed a new drummer.") 
m1.save() 

です。

我々は

メンバーGroupモデルのfieldで他にどんなことを行う必要はありませんか?

つまり、これは1ですか?

class Group(models.Model): 
    name = models.CharField(max_length=128) 
    members = models.ManyToManyField(Person, through='Membership') 

    # hes talking about me^^^^^^^^^^^^^^^^^^^^^^^^^^ 

もしそうならyay!しかし、このことはどういうことですか?

ringo.group_set.all() 

答えて

0
# what is this doing tho? 
ringo.group_set.all() 

あなたがのManyToManyField関係の

両脇の部分にドキュメントrelated-objects-referenceを読むことができることを理解する: