2010-10-12 150 views
1

我有一個Django應用程序,假設顯示發票和客戶。現在因爲某些原因當我運行Django的斷絕,因爲某些原因,只顯示發票數據invoice_list但不能在clients_list顯示客戶端的數據。客戶數據在另一個視圖中顯示,但不在invoice_details視圖中顯示。Django的問題

編輯:我似乎已經摸索出一些東西。 clients_list中的客戶端數據確實出現,但出於某種原因出現在錯誤的URL中。我嘗試儘可能簡單地解釋它。

網址

(r'^index/invoice_details/1一個客戶明細顯示在這個頁面。 (r'^index/invoice_details/2客戶端的細節出現在此頁面。 (r'^index/invoice_details/3一張發票顯示在此頁面上。

現在我想R「^指數/ invoice_details/3也顯示了什麼是寫在(R」 ^指數/ invoice_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 %} 
+0

爲什麼你在做'return render_to_response(('clients_details.html',locals()),{...})'?參考當地人的那個元組有什麼意義?通常使用本地語言來代替上下文詞典(我討厭的一個成語,但不介意),但是你提供了兩種語言。 – 2010-10-12 12:13:42

+0

這是一個巧合 - 1您的客戶端ID與發票編號1相關聯,並且發票2與客戶端2爲好。我假設你有ID爲3 – 2010-10-12 22:55:24

+0

@Lou佛朗哥沒有客戶端 - 好吧,你說的不是調用ID,使用不同的ID爲客戶和發票?例如(client_id invoice_id)。如果是這樣,我該如何做這項工作? – Shehzad009 2010-10-14 10:23:39

回答

1
clients_list = Client.objects.filter(pk=id) 

id是發票編號。

編輯:(基於問題的評論)

@login_required 
def invoice_details(request, id=1): 
    invoices_list = Invoice.objects.filter(pk=id) 
    client = invoices_list[0].client 
    return render_to_response(('invoice_details.html', 
     locals()), {'client': client, 
     'invoices_list': invoices_list }, 
     context_instance=RequestContext(request)) 

模板:取出for循環的客戶,把在:

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

你知道,這可能有效。我發現一旦我輸入更多數據 – Shehzad009 2010-10-15 13:34:40

1

你確定clients_list變量得到一個有效的價值?過濾器(PK = ID)是既爲客戶和發票過濾器一樣。嘗試插入一個

print clients_list 

用過濾器調用行後查看它包含的內容。

+0

事情是我首先從不同的視角首先爲客戶使用id。這實際上工作,我叫id = pk。奇怪的事情,爲什麼客戶不工作和發票呢。打印clients_list沒有使它工作。在這裏,我在視圖中爲客戶寫了什麼。 @login_required \t DEF clients_details(請求,ID = 1): \t clients_list = Client.objects.filter(PK = ID) \t選擇render_to_response回報(( 'clients_details.html',當地人()),{ 'clients_list': clients_list},context_instance = RequestContext(請求)) – Shehzad009 2010-10-12 11:44:50

1

奇怪的壓痕附近clients_list = Client.objects.filter(pk=id)

+0

如果這是一個準確的複製/粘貼,則必須修正凹痕。 – 2010-10-12 13:14:30