添加到多对多关系django
adding to a many to many relation 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
然后转到保存多对多关系的所有外键的 table 并添加我们保存的对象?
m1 = Membership(person=ringo, group=beatles,
date_joined=date(1962, 8, 16),
invite_reason="Needed a new drummer.")
m1.save()
然后完成了?
我们不需要对
做任何其他事情
Group
模型的 field
成员?
也就是这个?
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
# hes talking about me^^^^^^^^^^^^^^^^^^^^^^^^^^
如果是这样耶!但这到底是怎么回事?
ringo.group_set.all()
# what is this doing tho?
ringo.group_set.all()
要了解它,您可以阅读 related-objects-reference
部分的文档
Both sides of a ManyToManyField relation:
让我们看看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
然后转到保存多对多关系的所有外键的 table 并添加我们保存的对象?
m1 = Membership(person=ringo, group=beatles,
date_joined=date(1962, 8, 16),
invite_reason="Needed a new drummer.")
m1.save()
然后完成了?
我们不需要对
做任何其他事情Group
模型的 field
成员?
也就是这个?
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
# hes talking about me^^^^^^^^^^^^^^^^^^^^^^^^^^
如果是这样耶!但这到底是怎么回事?
ringo.group_set.all()
# what is this doing tho?
ringo.group_set.all()
要了解它,您可以阅读 related-objects-reference
部分的文档Both sides of a ManyToManyField relation: