Django问题
我有一个django应用程序,可以显示发票和客户。现在,由于某些原因,当我运行Django服务器时,由于某些原因,它只在invoice_列表中显示发票数据,而不能在clients_列表中显示客户端数据。客户端数据确实显示在另一个视图中,但不显示在发票详细信息视图中 编辑:我似乎想出了一些办法。clients_列表中的客户端数据确实出现,但由于某种原因出现在错误的url中。我尽量简单地解释它 网址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
(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/>