【问题标题】:Search a Many to Many Relationship搜索多对多关系
【发布时间】:2015-06-03 19:51:57
【问题描述】:

给定一个贡献者,我正在尝试查找该贡献者所属的注册。我不知道如何遍历 M2M - 我需要知道哪些注册在其“conrtibutor”字段中包含贡献者...?

class Registration(TimeStampedModel):
    dataset = models.ForeignKey('Dataset', related_name='registration')
    contributor = models.ManyToManyField('Contributor', related_name='registrations')   # many contributors may be involved with this registration

    def __unicode__(self):
        return self.dataset.dataset_name

class Contributor(models.Model):
    name = models.CharField(max_length=256, blank=False)
    email = models.EmailField(blank=False)

    def which_registration(self):
            registrations = Registration.objects.filter(contributor_contains=self)
            datasets = []
            for x in registrations:
                datasets.append(x.dataset)
            return datasets

【问题讨论】:

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


    【解决方案1】:

    我想你只需要这个:

    # assuming you have a contributor
    Registration.objects.filter(contributor=your_contributor_object)
    

    【讨论】:

    • 天哪,是的!我多么愚蠢——就是这样。我在想 M2M 需要不同类型的“包含”或其他东西。啊谢谢!我会在你允许的时候接受你的回答
    【解决方案2】:

    使用related_name 进行反向访问。

    def which_registration(self):
        #if you dont define related_name you should use
        #return self.registration_set.all()
        return self.registrations.all()
    

    【讨论】:

      猜你喜欢
      • 2013-09-30
      • 2015-10-29
      • 2019-05-10
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 2015-12-23
      相关资源
      最近更新 更多