Форум сайта python.su
Приветствую! Задача: с каждой статьей выводить напримар видео с YouTube. Видео у меня получилось прилепить, но только вот в следующей статье у меня выводится все тоже видео вместо другого.
view:
class ArticleVifania(ListView): model = Article template_name = "blog/articles.html" context_object_name = "my_favorit_publisher" def get_context_data(self, **kwargs): context = super(ArticleVifania, self).get_context_data(**kwargs) context[ "insert" ] = AddCodeYoutube.objects.all()[0] return context
class AddCodeYoutube(models.Model): name_pole = models.CharField(max_length=100, blank=True) add_youtube = models.CharField(max_length=300, verbose_name='Добавить код с YouTube') def __unicode__(self): return "%s" % self.name_pole class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() date = models.DateTimeField(auto_now=False) article_tag = models.ForeignKey(Tag) video = models.ForeignKey(AddCodeYoutube) def __unicode__(self): return "Заголовок статьи %s" % self.title
{% block content %} <h2>Publishers</h2> <ul> {% for publisher in my_favorit_publisher %} <li>{{ publisher.title }} </li> <!-- Браузером обрабатывается ЮТУБ код --> <li>{{ publisher.content }} </li> <li>{{ publisher.date }} </li> <li>{{ insert.add_youtube|safe|escape }} </li> {% endfor %} </ul> {% endblock %}
Офлайн
quixа почему оно должно быть другое, если запрос один и тот же?context[ "insert" ] = AddCodeYoutube.objects.all()[0]
Отредактировано FishHook (Апрель 9, 2016 11:17:52)
Офлайн
FishHookВеоно замечено.
context[ "insert" ] = AddCodeYoutube.objects.all()
{% for publisher in my_favorit_publisher %} <li>{{ publisher.title }} </li> <!-- Браузером обрабатывается ЮТУБ код --> <li>{{ publisher.content }} </li> <li>{{ publisher.date }} </li> <li>{{ insert.add_youtube|safe| escape }} </li> {% endfor %}
Офлайн
<li>{{ insert.add_youtube|safe| escape }} </li>
Офлайн
quixконечно нет, в контексте одно, в цикле другое.
Тут все верно?
Офлайн
FishHookкак же выдрать нужное из контекста?
Офлайн
Пришел к такому решению.
context[ "insert" ] = AddCodeYoutube.objects.get(pk = self.kwargs['pk'])
Офлайн
И снова здравствуйте!!!
class ArticleDetail(DetailView): template_name = "blog/article_detail.html" def get_queryset(self, **kwargs): self.qs = AddCodeYoutube.objects.filter(id = self.kwargs["pk"]) return self.qs def get_context_data(self, **kwargs): context = super(ArticleDetail, self).get_context_data(**kwargs) context[ "articledetail" ] = Article.objects.get(id = self.kwargs["pk"]) context[ "article_youtube_code" ] = self.qs # формирует ключ queryset в контекст return context
[<AddCodeYoutube: <iframe width="560" height="315" src="https://www.youtube.com/embed/C5e6t-eVQoQ" frameborder="0" allowfullscreen></iframe>>]
Отредактировано quix (Апрель 16, 2016 19:36:31)
Офлайн
quix
Чтобы не было “колбасы” нужен один объект. Один объект возвращается методом get, а методом filter всегда возвращается много объектов (то есть список, даже если он пустой он всё равно список).
Офлайн
FishHook
quixЧтобы не было “колбасы” нужен один объект. Один объект возвращается методом get, а методом filter всегда возвращается много объектов (то есть список, даже если он пустой он всё равно список).
Офлайн