我是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错误。
我很确定所有这些都有一个简单的解决方案,而且我这样做非常复杂,这就是我发布问题的原因。
答案 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 %}