2016-10-13 3 views
0

У меня есть веб-сайт управления подкастами, где пользователь может настроить свою учетную запись и после этого сможет создать несколько эпизодов от этого конкретного пользователя. После того, как эпизод будет завершен, появится кнопка, где он сможет увидеть некоторые ссылки, созданные автоматически для пользователя. Проблема, с которой я сталкиваюсь, заключается в том, что для каждого эпизода я пытаюсь показать ссылки для этого конкретного, но он всегда показывает ссылки с той, которую я недавно создал, и других эпизодов, которые были созданы ранее.Django: Фильтрация запроса на определенный идентификатор

Это кнопка, где пользователь нажимает, когда эпизод создал ссылки:

<a class="btn btn-info box-shadow--6dp" href="{% url 'pf:episodereview' production_id=instance.id %}" role="button"><i class="fa fa-link" aria-hidden="true"></i>&nbsp Review Links</a> 

URL, шаблон в urls.py:

url(r'^episodereview/(?P<production_id>[0-9]+)/$', views.EpisodeReview.as_view(), name="episodereview"), 

Это то, что происходит в views.py:

class EpisodeReview(LoginRequiredMixin, ProductionRequiredMixin, ListView): 
    template_name = 'pf/forms_episode_review.html' 
    podcast = None 

    def get(self, request, *args, **kwargs): 
     production_id = kwargs.get('production_id', None) 

     if production_id: 
      production = Production.objects.filter(id=production_id).first() 
      if not production: 
       return self.handle_no_permission() 

     return super(EpisodeReview, self).get(request, *args, **kwargs) 

    def get_queryset(self): 
     return Production.objects.filter(podcast=self.podcast) 

    def get_success_url(self): 
     return reverse('pf:dashboard') 

И шаблон, где все отображается:

{% extends "pf/base.html" %} 
{% load crispy_forms_tags %} 


{% block content %} 

<br> 
<br> 

<div class="panel panel-default box-shadow--16dp col-sm-6 col-sm-offset-3"> 
<div class="panel-body"> 

<div class='row'> 
<div class='col-sm-12'> 

<h3><i class="fa fa-wpforms pull-right" aria-hidden="true"></i>Episode Review&nbsp</h3> 

<h5>Following links are generated automatically with your accounts and can be used immediately.</h5> 

<hr/> 

    {% if object_list %} 

     <table class='table'> 
      <tbody> 
      {% for instance in object_list %} 
       <ul> 
        <li><b>Wordpress URL:</b> {{ instance.wordpress_url }}</li> 
        <li><b>Wordpress Short URL:</b> {{ instance.wordpress_short_url }}</li> 
        <li><b>Soundcloud Result URL:</b>{{ instance.soundcloud_result_url }}</li> 
        <li><b>Youtube Result URL:</b>{{ instance.youtube_result_url }}</li> 
        <li><b>Libsyn Result URL:</b>{{ instance.libsyn_result_url }}</li> 
       </ul> 
      {% endfor %} 
      </tbody> 
     </table> 
    {% endif %} 
<hr/> 
<button type="submit" class="btn btn-info box-shadow--6dp"><i class="fa fa-floppy-o" aria-hidden="true"></i> &nbspSave 
</button> 

</div> 
</div> 

</div> 
</div> 

{% endblock %} 

приветствуется любое предложение!

+0

Попробуйте поставить 'print (production_id)' чуть выше функции if и посмотреть, получает ли он правильный 'production_id'. – 1GDST

+0

@ 1GDST Да, он получает право 'id' – wlmrlsda

ответ

0

Вы фильтруете по id в методе get, но затем ничего не делаете с результатом. Когда дело доходит до конструирования контекста шаблона, Django вызывает get_queryset, который фильтрует только self.podcast - это None.

Вы должны переместить эту логику фильтра в get_queryset. И если вы также хотите фильтровать подкаст, вы также должны найти способ определить этот параметр.

+0

Спасибо за помощь. Чтобы понять, следует ли удалить метод get и оставить 'get_queryset' со всей логикой фильтра? Ссылки находятся в каждом отдельном 'production' ** (который считается эпизодом) ** и' production' находится в 'podcast', поэтому я просто хочу отфильтровать все 5 URL-адресов в этой' production', которые были созданы для этого конкретного ' production'. – wlmrlsda

+0

Простите, я не совсем понимаю. –

+0

Извините за путаницу. Мой главный вопрос был первым предложением. Остальное - это более подробное описание того, как происходит поток пользователей. – wlmrlsda