@SenderD

Как привязать тэг к посту в django?

Я не очень понял, как добавить тэг к посту...
MODELS.PY
class Post(models.Model):
    date = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=32)
    image = models.URLField()
    content = models.TextField()
    tag = models.ManyToManyField('Tag', blank=True, related_name='posts')

    def __str__(self):
        return self.title

class Tag(models.Model):
    title = models.CharField(max_length=32)

    def __str__(self):
        return self.title


В админке, если выбрать созданный тэг через shell, то в шаблоне он отображается как main.Tag.None. (main - название приложения) Как это исправить?
  • Вопрос задан
  • 442 просмотра
Решения вопроса 1
syschel
@syschel
freelance/python/django/backend
В админке, если выбрать созданный тэг через shell, то в шаблоне он отображается как main.Tag.None. (main - название приложения) Как это исправить?

Всё верно выводит.
Post - это список постов, вы выводите только один. К посту у вас привязан список тегов (не ForeignKey), сталобыть вам список и выводят, который вы должны обработать.
В шаблоне добавьте .all и увидете список тегов привязанных к даному посту.

{{ post.tag.all }}

Ну а дальше и обрабатывайте как список
{% for tg in post.tag.all %}{{ tg.title }}{% endfor %}


З.Ы. В модели поле с ManyToManyField лучше задавать имя переменной в множественном числе, то есть tags, а не tag.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы