У меня есть две модели;
class Customer(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
email = models.EmailField()
class WorkOrder(models.Model):
date_created = models.DateField('Date', default=datetime.now)
due_date = models.DateField('Due Date')
customer = models.ForeignKey(Customer, on_delete=models.CASCADE, verbose_name='Customer')
STATUS_CHOICES = [
('pending', 'Pending'),
('approved', 'Approved'),
('completed', 'Completed'),
('cancelled', 'Cancelled'),
]
status = models.CharField('Status of the work order', max_length=10, choices=STATUS_CHOICES, default='pending')
description = models.TextField('Description of the work')
Я написал представление списка на основе классов, чтобы составить список клиентов:
class ReportCustomerListView(ListView):
model = CustomUser
template_name = 'reports/customer_report.html'
def get_queryset(self):
return CustomUser.objects.filter(is_staff=False).filter(is_superuser=False)
Я хотел бы подготовить отчет для пользователя о своим клиентам, поэтому я хотел показать, сколько ожидающих, утвержденных и выполненных рабочих заказов есть у клиента. Мой шаблон списка:
<table class="table table-striped">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">First Name</th>
<th scope="col">Last Name</th>
<th scope="col">Company</th>
<th scope="col">Pending Work Orders</th>
<th scope="col">Active Work Orders</th>
<th scope="col">Completed Work Orders</th>
<th scope="col">Draft Bills</th>
</tr>
</thead>
<tbody>
{% for customer in object_list %}
<tr>
<th scope="row">{{ forloop.counter }}</th>
<td>{{ customer.first_name }}</td>
<td>{{ customer.last_name }}</td>
<td>{{ customer.company.company_name }}</td>
...
...
... // the part where I am stuck
Но я теряюсь после этого после 4 часов чтения, я в замешательстве. Я знаю, что могу получить доступ к рабочим заказам с
>>> Users.objects.get(pk=pk).workorder_set
. Мой вопрос: как я могу получить подсчеты рабочих заказов клиентов по каждому типу статуса в шаблоне? Другими словами, как я могу отфильтровать связанные поля в списке объектов в шаблоне?
Другие методы, такие как фильтрация по представлениям, также будут работать для меня, но, опять же, я не знаю, как это сделать.
Большое спасибо за ваше время ...