Джанго вопрос - PullRequest
       4

Джанго вопрос

1 голос
/ 12 октября 2010

У меня есть приложение django, которое должно отображать счета и клиентов. Теперь по некоторым причинам Когда я запускаю сервер Django, по некоторым причинам он отображает только данные счета в invoice_list, но не может отображать данные клиентов в client_list. Данные о клиентах отображаются в другом представлении, но не в представлении invoice_details.

РЕДАКТИРОВАТЬ: Кажется, что-то получилось. Данные о клиентах в client_list по какой-то причине появляются, но в неправильном URL. Я пытаюсь объяснить это так просто, как только могу.

1007 * URLs *

(r'^index/invoice_details/1 Подробная информация о клиенте появляется на этой странице. (r'^index/invoice_details/2 Подробная информация о клиенте появляется на этой странице. (r'^index/invoice_details/3 Счет отображается на этой странице.

Теперь я хочу, чтобы r '^ index / invoice_details / 3 также показывал, что написано в (r' ^ index / 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 %}

Ответы [ 3 ]

1 голос
/ 12 октября 2010
 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/>
1 голос
/ 12 октября 2010

странный отступ около clients_list = Client.objects.filter(pk=id)

1 голос
/ 12 октября 2010

Вы уверены, что переменная clients_list получает допустимое значение?Фильтр (pk = id) одинаков как для фильтра клиента, так и для фильтра счетов.Попробуйте вставить

  print clients_list

сразу после строки с вызовом фильтра, чтобы увидеть, что он содержит.

...