У меня есть эти 2 модели в приложении Django:фильтра многого ко многим поля в модели Django
class Tag(models.Model):
name = models.CharField(max_length=100, blank=False, unique=True)
class Article(models.Model):
title = models.CharField(max_length=100, blank=True, default='')
tags = models.ManyToManyField(Tag, blank=True)
В моих взглядах, я хотел бы фильтра статьи и получить только статьи, в которых articles.tags
содержит тег с id == 2
. Как я могу это сделать ?
Я попытался
tags = Tag.objects.filter(pk=2);
articles = Article.objects.filter(len(tags) > 0)
, но у меня есть эта ошибка 'bool' object is not itterable
.
Это решило, спасибо. – rocketer
Существует только один тег с id '2', поэтому лучше использовать' tag = Tag.objects.get (pk = 2) ', который возвращает экземпляр' Tag' вместо 'QuerySet', вы можете использовать' tag.article_set.all() ' – aumo
@aumo: Если он знает идентификатор тега, то нет необходимости вызывать обратное отношение, он может напрямую использовать решение, которое я предоставил вначале –