Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. class Worker(models.Model):
  2. name = models.CharField(max_length=255)
  3.  
  4.  
  5. class Invoice(models.Model):
  6. worker = models.ForeignKey(
  7. 'Worker', on_delete=models.CASCADE)
  8. amount = models.DecimalField(max_digits=10, decimal_places=2)
  9.  
  10. from decimal import Decimal
  11.  
  12. from django.test import TestCase
  13. from django.db.models import Sum
  14.  
  15. from myapp.models import Worker, Invoice
  16.  
  17.  
  18. def get_payable_invoices():
  19. return Invoice.objects.filter(
  20. worker__in=Worker.objects.annotate(Sum('invoice__amount')))
  21. .filter(invoice__amount__sum__gt=0)
  22.  
  23.  
  24. class PayableInvoicesTests(TestCase):
  25. def test_get_payable_invoices(self):
  26. worker1 = Worker.objects.create(name="John Doe")
  27.  
  28. invoice1 = Invoice.objects.create(
  29. worker=worker1, amount=Decimal('100.00'))
  30. invoice2 = Invoice.objects.create(
  31. worker=worker1, amount=Decimal('-150.00'))
  32.  
  33. worker2 = Worker.objects.create(name="Mary Contrary")
  34. invoice3 = Invoice.objects.create(
  35. worker=worker2, amount=Decimal('200.00'))
  36.  
  37. self.assertEqual(get_payable_invoices().count(), 1)
  38. self.assertEqual(get_payable_invoices().first(), invoice3)
  39.  
  40. django.core.exceptions.FieldError: Cannot resolve keyword 'invoice' into field. Choices are: amount, id, worker, worker_id
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement