фильтровать блоги по тегам в Django - PullRequest
1 голос
/ 19 июня 2020

Я хотел бы визуализировать представление в Django с объектами, имеющими определенные теги.

Вот моя модель:

class Tag(models.Model):
    """Model representing a tag."""
    name = models.CharField(max_length=200)

class Post(models.Model):
    """Model representing a post."""
    title = models.CharField(max_length=200)
    # ManyToManyField used because tag can contain many posts. Posts can cover many tags.
    tag = models.ManyToManyField(Tag, related_name='tags', blank=True, default='', help_text='Select a tag for this post')

после выполнения миграции я вижу три сгенерированные таблицы в моей БД: blog_tag, blog_post и blog_post_tag blog_post таблица не содержит столбца с именем tag, вместо этого blog_post_tag содержит все сопоставления.

Что бы я хотел Чтобы достичь, нужно найти все сообщения с определенными тегами.

Я пробовал использовать post_list = Post.objects.filter(tag__in=['AWS']), но этот бросает

Field 'id' expected a number but got 'AWS'.

Любая помощь в решении этого вопроса будет принята с благодарностью!

1 Ответ

1 голос
/ 19 июня 2020

Ну, вы здесь фильтруете первичный ключ тега. Если вы хотите отфильтровать по name, вы можете отфильтровать с помощью:

post_list = Post.objects.filter(<b>tag__name__in=['AWS']</b>)

Поскольку список здесь содержит один элемент , вы можете фильтровать с помощью:

post_list = Post.objects.filter(<b>tag__name='AWS'</b>)
...