Python Django查看问题外键

Python Django查看问题外键,python,django,django-templates,django-views,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):

我遇到了相关模型类的麻烦。 我有一个这样的模型:

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))
{% 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 %}
我的观点如下:

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))
{% 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 %}
网址是:

#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),
#包含所有电影对象的查询集
电影资讯={
'queryset':Cine.objects.all(),
“模板名称”:“cines all.html”,
}
url(r“^complejos/$”,列表\u detail.object\u列表,电影信息),
url(r'^complejos/(?P.*)/$,views.CineDetail),
url(r'^complejos/(?P.*)/functiones/(?P.*)/$,views.functionesbycine),
url(r“^funciones/$”,views.FuncionesAll),
url(r'^funciones/(?P.*)/$,views.FuncionesByCine),
当我从如下url调用Function时,这将为我提供与Function中的“电影”关联的所需“Functiones”:localhost:8000/Functiones/1

现在,我希望能够从显示单个电影院(“电影”)的模板调用此视图,并使用此视图能够显示该“电影”上的所有放映时间(“功能”)

我尝试使用相同的视图,但使用不同的url:

url(r'^complejos/(?P<cineslug>.*)/funciones/(?P<id>.*)/$', views.FuncionesByCine),
url(r'^complejos/(?P.*)/functiones/(?P.*)/$,views.functionesbycine),
模板调用如下所示:

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))
{% 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 %}
{%extends'cines menu.html%}
{%block content%}
名义:

城市:{{cine.Ciudad}

目录:{{cine.Direccion}

{%endblock%}
这目前不起作用。有什么想法吗? 谢谢


编辑:我已经添加了其他视图和URL(也是使用cineslug的视图和URL)

什么具体不起作用?您收到了哪些错误

我看到一个您正试图将
cineslug
传递给视图函数并作为参数

使用时,它们将作为位置参数传递给视图

def functionesbycine(请求,id):

应该是

def functionesbycine(请求、电影片段、id):

但我相信这会破坏你原来的网址

您可以将函数定义更改为
def functionesbycine(请求、电影片段、id):

并为
cineslug

url(r'^functiones/(?p.*)/$,views.functionesbycine,{'cineslaug':None})

您可以通过slug检索
函数
,如:


funciones=Funcion.objects.filter(idcine\uu slug={{{您的slug值在这里}})

Hi,首先您应该在URL上使用更好的正则表达式。假设id是一个数字字段,您应该匹配每个值。因此,首先用(?P.*)代替(?P\d+)。弹头场也是如此。而不是(?P*)替换为与段塞场更相关的内容。(?P[\w-]+)@andrefsp谢谢你的提示,我对regex没有太多经验,但我会用谷歌搜索你给我的那些来理解它们。嗨,实际上我不需要cineslug来查看这个视图,我只是在上一个视图中使用它,这个视图有一个电影列表,可以带我去单独的电影。但在这种情况下,当你点击一部电影时,我希望能够获得将该电影作为外键的“函数”。@Edu添加了如何通过slugyes查询
function
的示例。是的,刚刚测试了这两个函数,它可以通过id或通过slug查询函数,就像你提到的那样。我的困惑实际上是URL,但我能够找出我做错了什么。谢谢你的帮助。