40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from django.db import models
|
|
from main.models import Product
|
|
|
|
class Order(models.Model):
|
|
first_name = models.CharField(max_length=50)
|
|
last_name = models.CharField(max_length=50)
|
|
email = models.EmailField()
|
|
address = models.CharField(max_length=250)
|
|
postal_code = models.CharField(max_length=22)
|
|
city = models.CharField(max_length=100)
|
|
phone = models.CharField(max_length=20, blank=True) # Добавлено поле для номера телефона
|
|
created = models.DateTimeField(auto_now_add=True)
|
|
updated = models.DateTimeField(auto_now=True)
|
|
paid = models.BooleanField(default=False)
|
|
|
|
class Meta:
|
|
ordering = ['-created']
|
|
indexes = [
|
|
models.Index(fields=['-created']),
|
|
]
|
|
|
|
def __str__(self):
|
|
return f'Order {self.id}'
|
|
|
|
def get_total_cost(self):
|
|
return sum(item.get_cost() for item in self.items.all())
|
|
|
|
|
|
class OrderItem(models.Model):
|
|
order = models.ForeignKey(Order, related_name='items', on_delete=models.CASCADE)
|
|
product = models.ForeignKey(Product, related_name='order_items', on_delete=models.CASCADE)
|
|
price = models.IntegerField(max_length=19)
|
|
quantity = models.PositiveIntegerField(default=1)
|
|
|
|
def __str__(self):
|
|
return str(self.id)
|
|
|
|
def get_cost(self):
|
|
return self.price * self.quantity
|