我遇到了相关模型类的问题。 我的模型看起来像这样:
class Cine(models.Model):
nombre = models.CharField(max_length=150)
ciudad = models.ForeignKey(Ciudad, db_column='ciudad')
slug = models.SlugField(unique=True, blank=True)
...
class Funcion(models.Model):
idpelicula = models.ForeignKey(Pelicula, db_column='idpelicula')
idcine = models.ForeignKey(Cine, db_column='idcine', null=True)
hora = models.TimeField(null=True)
...
我的观点如下:
def FuncionesByCine(request, id):
funcionesByCine = Funcion.objects.filter(idcine=id)
context = {'funcionesByCine': funcionesByCine}
return render_to_response('funciones-by-cine.html', context, context_instance=RequestContext(request))
def CineDetail(request, cineslug):
cine = Cine.objects.get(slug=cineslug)
context = {'cine': cine}
return render_to_response('cine-individual.html', context, context_instance=RequestContext(request))
和网址:
#Queryset containing all the Cine objects
cine_info = {
'queryset': Cine.objects.all(),
'template_name': 'cines-all.html',
}
url(r'^complejos/$', list_detail.object_list, cine_info),
url(r'^complejos/(?P<cineslug>.*)/$', views.CineDetail),
url(r'^complejos/(?P<cineslug>.*)/funciones/(?P<id>.*)/$', views.FuncionesByCine),
url(r'^funciones/$', views.FuncionesAll),
url(r'^funciones/(?P<id>.*)/$', views.FuncionesByCine),
当我从网址中调用它时,这给了我与Funcion的'cine'相关联的所需“功能”:localhost:8000 / funciones / 1.
现在,我希望能够做的是从显示单个电影院('cine')的模板调用此视图,并使用此视图显示所有放映时间('funciones')正在那个'电影'。
我正在尝试使用相同的视图,但使用不同的网址:
url(r'^complejos/(?P<cineslug>.*)/funciones/(?P<id>.*)/$', views.FuncionesByCine),
模板调用如下所示:
{% extends 'cines-menu.html' %}
{% block content %}
<div class="cine">
<p>Nombre: <a href="funciones/{{cine.id}}">{{cine}}</a></p>
<p>Ciudad:{{cine.ciudad}}</p>
<p>Direccion:{{cine.direccion}}</p>
{% endblock %}
目前无效。有任何想法吗? 谢谢!
编辑:我添加了其他视图和网址(也是使用cineslug的视图和网址)
答案 0 :(得分:1)
具体哪些不起作用?你收到了什么错误?
我看到您试图将cineslug
传递给您的视图功能并作为参数。
当您使用named groups时,它们将作为位置参数传递给视图。
def FuncionesByCine(request, id):
shoudl be
def FuncionesByCine(request, cineslug, id):
但我相信这会破坏你原来的网址,
您可以将功能定义更改为def FuncionesByCine(request, cineslug, id):
并传递cineslug
url(r'^funciones/(?P<id>.*)/$', views.FuncionesByCine, {'cineslug': None})
def FuncionesByCine(request, cineslug, id):
if cineslug is None:
# this is from funciones/{id}
您可以通过slug检索Funcion
,如:
funciones = Funcion.objects.filter(idcine__slug={{ your slug value here }})