I need to retrieve data from multiple tables to display shop name, shop location, shop monthly sales volume(unit), monthly sales amount, and sales person name who take orders from the shop. My sample table example below:
Order
id total_price added_by_id(employee id) customer_id
1 42480 2 1
2 74920 3 2
3 21000 3 2
4 42480 2 1
OrderItem
order_id unit
1 1
1 2
2 2
2 2
3 2
4 5
Customer
id full_name location
1 Shop1 Example location1
2 Shop2 Example location2
Employee
id full_name
1 Employee Name1
2 Employee Name2
And the resultant table should be
shop name location salesperson sales volume monthly sales
Shop1 location1 Employee Name1 8 43630
Shop2 location2 Employee Name2 6 95920
My Try:
Order.objects.select_related('account_customer').all()
.values('customer_id')
.annotate(total_sales=Sum('total_price'))
.filter(created_at__year=today.year, created_at__month=today.month)
It will return
<QuerySet [{'customer_id': 1, 'total_sales': Decimal('43630.00')}, {'customer_id': 2, 'total_sales': Decimal('95920.00')}]>
I can't retrieve other necessary information like shop name, location, salesperson name sales volume.
Related models:
class Order(models.Model):
added_by = models.ForeignKey(Employee, on_delete=models.CASCADE)
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
total_price = models.DecimalField(max_digits=18, decimal_places=2)
class OrderItem(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE)
unit = models.FloatField()
class Customer(models.Model):
shop_name = models.CharField(max_length=100)
address = models.CharField(max_length=100)
class Employee(AbstractUser):
full_name = models.CharField(max_length=100)
How can I retrieve all of my necessary information?