【问题标题】:Django ManyToManyField get records from related model where not in join tableDjango ManyToManyField 从不在连接表中的相关模型中获取记录
【发布时间】:2015-09-04 23:20:55
【问题描述】:

我正在使用 Django ManyToManyField 为照片分配标签。我将 M2M 字段放在标签模型中:

class Tags(models.Model):
    tag = models.CharField(max_length=100, blank=True, null=True)
    photos = models.ManyToManyField(Photos)

它工作正常。我可以使用以下方法获取分配给照片的所有标签:

photo = Photos.objects.get(id=int(photo_id))
photo_tags = photo.tags_set.all()

然后为用户提供所有标签的列表,以便他们可以为他们分配我正在使用的照片:

tag_list = Tags.objects.order_by('tag')

但是,我想将此列表限制为尚未分配给照片的标签,例如标签不在该照片的连接表中。

但坚持在这里使用什么 ORM 逻辑。有类似 tags_set_none 或 filter(tags_set=None) 的东西吗?

【问题讨论】:

  • 您可以获取这些标签的 id 并直接过滤标签以包含除这些之外的所有内容。我不知道这是否是最好的方法,因为这需要 2 个查询,但应该是一个有效的。

标签: django django-views


【解决方案1】:
tags = Tags.objects.exclude(photos=photo)

【讨论】:

  • 该死的!太容易了。我如何从 Django 文档中自己解决这个问题?也许一个方便的列表列出了可用的 Django ORM 魔法?嗯谢谢
猜你喜欢
  • 2013-12-22
  • 2013-12-12
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多