我有一个播客管理网站,用户可以在其中设置自己的帐户,之后可以创建该特定用户的多个剧集。完成一集后,会出现一个按钮,在那里他可以看到一些自动创建供用户使用的链接。我遇到的问题是,对于每一集,我都试图显示该特定链接的链接,但它始终显示我最近创建的链接和之前创建的其他剧集的链接。
这是用户在剧集创建链接时点击的按钮:
<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>  Review Links</a>
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 </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>  Save
</button>
</div>
</div>
</div>
</div>
{% endblock %}
欢迎任何建议!
答案 0 :(得分:0)
您可以按get方法中的id进行过滤,但不要对结果执行任何操作。在构造模板上下文时,Django调用get_queryset,它只能通过self.podcast进行过滤 - 这是None。
您应该将该过滤器逻辑移动到get_queryset中。如果您还想通过播客进行过滤,您也应该找到一种定义该参数的方法。