2016-10-13 4 views
0

사용자가 자신의 계정을 설정할 수있는 포드 캐스트 관리 웹 사이트가 있습니다. 그러면 해당 사용자의 여러 에피소드를 만들 수 있습니다. 에피소드가 완료되면 사용자가 사용할 수 있도록 자동으로 생성되는 링크를 볼 수있는 버튼이 나타납니다. 내가 가지고있는 문제는 모든 에피소드마다 해당 특정 링크를 표시하려고하지만 항상 내가 최근에 만든 링크와 이전에 작성된 다른 에피소드의 링크를 계속 표시한다는 것입니다.Django : 특정 ID로 쿼리 필터링

<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

if 함수 바로 위에'print (production_id) '를 넣고 올바른'production_id'를 얻는 지보십시오. – 1GDST

+0

@ 1GDST 예, 올바른 id를 얻습니다. – wlmrlsda

답변

0

get 메소드의 id로 필터링하지만 결과에는 아무런 변화가 없습니다. 템플릿 컨텍스트를 생성 할 때 장고는 self.podcast 만 필터링하는 get_queryset을 호출합니다. 이는 None입니다.

필터 로직을 get_queryset으로 이동해야합니다. 또한 podcast를 기준으로 필터링하려면 해당 매개 변수를 정의하는 방법을 찾아야합니다.

+0

도움을 주셔서 감사합니다. 이해하기 위해,'get' 메소드를 제거하고 모든 필터 로직을 가진'get_queryset'을 그대로 두어야합니까? 링크는 각 개인의'production' ** (에피소드로 간주됩니다) **에 있고'production '은'podcast'에 있습니다. 그래서 나는 그 특정' 생산'. – wlmrlsda

+0

죄송합니다. 이해가되지 않습니다. –

+0

혼란을 드려 죄송합니다. 나의 주요 질문은 첫 번째 문장이었다. 나머지는 사용자의 흐름을 자세히 설명하는 것입니다. – wlmrlsda