如何在流派中调用某些剧集

时间:2018-01-05 23:19:52

标签: python django

我是django的新手,我对此感到困惑,基本上我想迭代所有系列并返回属于某种类型的系列。

models.py

var options = {
            title: 'Wake Up',
            text: 'Time to get moving',
            data: '',
            at: sendTime
        };

buildfire.notifications.localNotification.schedule(options, function (err, data) {

        });

views.py

class Series(models.Model):
    series_title = models.CharField(max_length=50)
    series_desc = models.TextField(max_length=500)
    series_date_published = models.DateTimeField()

class Genres(models.Model):
    genre_name = models.CharField(max_length=50)
    genre_serie = models.ManyToManyField(Series)

class Episodes(models.Model):
    episode_title = models.CharField(max_length=50)
    episode_desc = models.TextField(max_length=500)
    episode_date_published = models.DateTimeField()
    episode_number = models.IntegerField()
    episode_series = models.ForeignKey(Series, on_delete=models.CASCADE)

我正在努力以一种类型显示我的系列剧:

class IndexView(generic.ListView):
    model = Series
    template_name = 'videos/index.html'
    context_object_name = 'series'
    def get_queryset(self):
        return Series.objects.all()

class ViewSeries(generic.ListView):
    model = Episodes
    template_name = 'videos/videos.html'
    context_object_name = 'episodes'
    def get_queryset(self):
        return Episodes.objects.filter(episode_series=self.kwargs['pk'])

class ViewGenres(generic.ListView):
    model = Series
    template_name = 'videos/genres.html'
    context_object_name = 'series'
    def get_queryset(self):
        return Series.objects.filter(genres__genre_serie=self.kwargs['pk'])

urls.py

{% for s in series %}
  <a href='(% url ?? %)'>{{ s.series_title }}</a></td>      
{% endfor %}

我放置了该网址,因为从那里我想获得该系列的链接,但是当我输入app_namme = 'videos' urlpatterns = [ path('', IndexView.as_view(),name='index'), path('viewseries/<int:pk>', ViewSeries.as_view(),name='detail'), path('viewgenres/<int:pk>', ViewGenres.as_view(),name='genres'), ] 时,我收到NoReverseMatch错误。

我很确定所有这些都有一个简单的解决方案,而且我这样做非常复杂,这就是我发布问题的原因。

1 个答案:

答案 0 :(得分:0)

这里有两个问题:(1)获得属于某种类型的系列; (2)纠正{% url ... %}查询:

我们可以通过利用ManyToManyField反向关系来实现这一点(这是 - 如果没有提供反向名称 - modelname):

def get_queryset(self):
    return Series.objects.filter(genre__pk=self.kwargs['pk']).distinct()

然后对于{% url ... %}部分,您可能需要提供名为的参数(同样需要将url放在卷曲括号之间而不是圆形的,所以:

{% for s in series %}
  <td><a href="{% url 'videos:detail' pk=s.pk %}">{{ s.series_title }}</a></td>
{% endfor %}