【问题标题】:adding to a many to many relation django添加到多对多关系 django
【发布时间】:2018-04-04 12:53:21
【问题描述】:

让我们看一下 django 文档代码,用于添加 bettles 的成员。

首先我们有我们的模型:

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

就是这个?

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

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

如果是这样的话!但这到底是怎么回事?

ringo.group_set.all()

【问题讨论】:

    标签: python django django-models many-to-many models


    【解决方案1】:
    # what is this doing tho? 
    ringo.group_set.all()
    

    要了解它,您可以阅读文档related-objects-reference的部分

    ManyToManyField 关系的双方:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-05
      • 2016-03-05
      • 2019-01-02
      • 2016-03-20
      • 2021-02-07
      • 2018-03-19
      • 1970-01-01
      • 2020-03-11
      相关资源
      最近更新 更多