Django问题

Django问题,django,templates,tags,django-urls,django-views,Django,Templates,Tags,Django Urls,Django Views,我有一个django应用程序,可以显示发票和客户。现在,由于某些原因,当我运行Django服务器时,由于某些原因,它只在invoice_列表中显示发票数据,而不能在clients_列表中显示客户端数据。客户端数据确实显示在另一个视图中,但不显示在发票详细信息视图中 编辑:我似乎想出了一些办法。clients_列表中的客户端数据确实出现,但由于某种原因出现在错误的url中。我尽量简单地解释它 网址 (r'^index/invoice\u details/1客户详细信息将显示在此页面。 (r'^in

我有一个django应用程序,可以显示发票和客户。现在,由于某些原因,当我运行Django服务器时,由于某些原因,它只在invoice_列表中显示发票数据,而不能在clients_列表中显示客户端数据。客户端数据确实显示在另一个视图中,但不显示在发票详细信息视图中

编辑:我似乎想出了一些办法。clients_列表中的客户端数据确实出现,但由于某种原因出现在错误的url中。我尽量简单地解释它

网址

(r'^index/invoice\u details/1
客户详细信息将显示在此页面。
(r'^index/invoice\u details/2
客户详细信息将显示在此页面。
(r'^index/invoice\u details/3
发票将显示在此页面上

现在,我希望r'^index/invoice\U details/3也显示写入的内容(r'^index/invoice\U details/1),但由于两个数字不同,因此将失败

以下是一些可能有用的输出

#models.py
Class Client(models.Model):
    company = models.CharField(max_length=80)
    first_name = models.CharField(max_length=80, blank=True, null=True)
    last_name = models.CharField(max_length=80, blank=True, null=True)
    address = models.CharField(max_length=250)
    city = models.CharField(max_length=100)
    country = models.CharField(max_length=120)
    postcode = models.CharField(max_length=7)
    telephone = models.CharField(max_length=20)
    email = models.EmailField()
    additional_info = models.TextField(blank=True, null=True)

    def __unicode__(self):
            return self.company 

class Invoice(models.Model):
    client = models.ForeignKey(Client)
    date = models.DateField()
    invoice_no = models.CharField(max_length=16)
    work_orders = models.ManyToManyField(Work_Order)
    contract_info = models.ForeignKey(Contract_Info)

    def __unicode__(self):
                return self.invoice_no


    # urls.py
    urlpatterns = patterns('',
       (r'^index/invoice/$', invoice_info),
       (r'^index/invoice_details/(?P<id>\d+)/$', invoice_details),
    )

    #views.py
    @login_required 
    def invoice_details(request, id=1):
            clients_list = Client.objects.filter(pk=id)
        invoices_list = Invoice.objects.filter(pk=id) 
        return render_to_response(('invoice_details.html
', locals()), {'clients_list': clients_list, 'invoices_list': invoices_list }, context_instance=RequestContext(request))

    @login_required 
    def clients_details(request, id=1):
       clients_list = Client.objects.filter(pk=id) 
       return render_to_response(('clients_details.html', locals()), {'clients_list':   clients_list}, context_instance=RequestContext(request))

#invoice_details.html
{% extends "base.html" %}

{% block content %}
<h2>Invoice Details</h2>
<div id="horizontalnav">
  <a href="/index/add_invoice">Add an Invoice</a>
  <a href="/index/work_orders">Add a Work Order</a>
  <a href="/index/add_payment">Add Payment</a>
</div>
<ul STYLE="border: 1px solid;float:left;padding:15px; width: 400px;">
<img src="{{ MEDIA_URL }}images/c2duo.png" border="0" STYLE="text-alignment:left">
<p STYLE="margin-left:340px; margin-top:0px; COLOR:blue; Font-family:ARIAL">INVOICE
  <div id="list">

     {% for invoice in invoices_list %}
       {{invoice.client}}
       <p style="text-align: right;">INVOICE # {{invoice.invoice_no}}<br/>
       {{invoice.contract_info}}<br/>
       {{invoice.date}}<br/>
       {% for invoice in invoice.work_orders.all %}
         {{invoice}}<br/>
       {% endfor %}
     {% endfor %}
     {% for clients in clients_list %}
       {{clients.company}}<br/>
       {{clients.postcode}}<br/>
     {% endfor %}

    </div>
</ul>
{% endblock %}
#models.py
类客户端(models.Model):
公司=型号.CharField(最大长度=80)
first_name=models.CharField(最大长度=80,空白=True,空=True)
last_name=models.CharField(最大长度=80,空白=True,空=True)
地址=models.CharField(最大长度=250)
城市=型号.CharField(最大长度=100)
国家/地区=型号.CharField(最大长度=120)
邮编=models.CharField(最大长度=7)
电话=models.CharField(最大长度=20)
email=models.EmailField()
附加信息=models.TextField(空白=真,空=真)
def ___; unicode(自):
回归自我公司
类别发票(型号.型号):
客户端=型号。外键(客户端)
date=models.DateField()
发票号=models.CharField(最大长度=16)
工单=模型.ManyToManyField(工单)
合同信息=型号。外键(合同信息)
def ___; unicode(自):
返回自发票号
#url.py
urlpatterns=模式(“”,
(r“^index/invoice/$”,发票信息),
(r'^index/发票详细信息/(?P\d+/$),发票详细信息),
)
#views.py
@需要登录
def发票详细信息(请求,id=1):
clients\u list=Client.objects.filter(pk=id)
发票\u列表=发票.objects.filter(pk=id)
返回render_to_响应(('invoice_details.html
“,locals(),{'clients_list':clients_list,'invoices_list':invoices_list},context_instance=RequestContext(请求))
@需要登录
def客户端详细信息(请求,id=1):
clients\u list=Client.objects.filter(pk=id)
返回render_to_response(('clients_details.html',locals()),{'clients_list':clients_list},context_instance=RequestContext(request))
#发票详细信息.html
{%extends“base.html”%}
{%block content%}
发票明细
边框:1px实心;浮动:左侧;填充:15px;宽度:400px;“>
发票
{发票中发票的%u列表%}
{{invoice.client}
发票{{INVOICE.INVOICE{u no}}

{{invoice.contract_info}}
{{发票日期}}
{invoice.work_orders.all%中发票的% {{发票}}
{%endfor%} {%endfor%} {客户端列表%中的客户端为%0} {{clients.company}}
{{clients.postcode}}
{%endfor%} {%endblock%}


是否确定客户端列表变量获取的值有效?客户端和发票筛选器的筛选器(pk=id)相同。请尝试插入

  print clients_list
就在带有筛选器调用的行之后,查看它包含的内容

 clients_list = Client.objects.filter(pk=id)
id是发票id

编辑:(基于对问题的评论)

模板:取出客户端的for循环,放入:

   {{client.company}}<br/>
   {{client.postcode}}<br/>
{{client.company}}
{{client.postcode}}

客户机附近的奇怪缩进\u list=Client.objects.filter(pk=id)

问题是,我实际上首先从另一个视图为客户端使用id。这实际上起作用了,我称为id=pk。奇怪的是,为什么客户端不起作用,而发票起作用了。打印客户端列表不起作用。这里是我在视图中为客户端编写的内容。@login\u required def clients_details(request,id=1):clients_list=Client.objects.filter(pk=id)返回render_to_响应(('clients_details.html',locals(),{'clients_list':clients_list},context_instance=RequestContext(request)),为什么要
返回render_to_响应(('clients_details.html',locals(),{…})
?引用局部变量的元组有什么意义?通常使用局部变量来代替上下文词典(我讨厌这个习语,但没关系),但您同时提供了这两个。这是一个巧合——您的客户id为1与发票id为1关联,发票2也与客户2关联。我假设您没有id为3的客户。@Lou Franco-好的,您的意思是,不要调用id,而是为客户和发票使用不同的id?例如:(客户id发票id)。如果是这样,我该如何做?这取决于。发票列表中的每个发票是否都有不同的客户机?从模板中,发票有一个客户机字段。为什么不直接从发票访问它?@Lou Franco。是的,我的发票有一个客户机字段。(检查My models.py,我已经设置了它)但是,这仅显示公司名称。这是因为在我的model.py中,我有def\uuuuunicode\uuuuu(self):返回“我的客户”类下的self.company。哦,至于你的第一个问题,它是相反的。客户列表中的客户可以有许多发票。如果这是准确的复制/粘贴,则必须修复缩进。你知道,这可能已经起作用了。我在输入更多数据后发现了这一点
   {{client.company}}<br/>
   {{client.postcode}}<br/>