0

我在使用相关模型类时遇到了麻烦。我有一个看起来像这样的模型:

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),

当我从这样的 url 调用它时,这给了我与来自 Funcion 的“电影”相关联的所需“funciones”: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 的)

4

1 回答 1

1

具体是什么不起作用?你收到什么错误?

我看到您试图将其传递cineslug给您的视图函数并作为参数。

当您使用命名组时,它们会作为位置参数传递给视图。

def FuncionesByCine(request, id):

应该是

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} 

Funcion您可以通过 slug检索's,例如:

funciones = Funcion.objects.filter(idcine__slug={{ your slug value here }})

于 2012-11-13T17:32:51.147 回答