Django查看问题 - ForeignKey

时间:2012-11-13 17:23:00

标签: python django django-templates django-views

我遇到了相关模型类的问题。 我的模型看起来像这样:

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的视图和网址)

1 个答案:

答案 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 }})