class Customer(models.Model): class Meta: db_table = 'customer' default_related_name = 'customer' first_name = models.CharField(max_length=250, null=True, blank=True) last_name = models.CharField(max_length=250, null=True, blank=True) email = models.EmailField(max_length=250, unique=True, null=True, blank=True) password = models.CharField(max_length=250, null=False, blank=False) birthday = models.DateField(null=True, blank=True) phone = models.CharField(max_length=12, unique=True, null=False, blank=False) gender = models.CharField( max_length=6, choices=CustomerGender.choices, default=CustomerGender.Female ) customer_shipment = models.ForeignKey( CustomerShipment, on_delete=models.SET_NULL, null=True, blank=True ) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = CustomerManager()
class Order(models.Model): class Meta: db_table = 'order' default_related_name = 'order' shipment_status = models.CharField( max_length=8, choices=OrderShipmentStatus.choices, default=OrderShipmentStatus.Not_Ship ) payment_status = models.CharField( max_length=7, choices=OrderPaymentStatus.choices, default=OrderPaymentStatus.Not_Pay ) customer = models.ForeignKey( Customer, on_delete=models.SET_NULL, null=True, blank=True ) order_product = models.ManyToManyField( OrderProduct, through='OrderOrderProduct', ), order_shipment = models.ForeignKey( OrderShipment, on_delete=models.SET_NULL, null=True, blank=True ) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = OrderManager()
class OrderShipment(models.Model): class Meta: db_table = 'order_shipment' default_related_name = 'order_shipment' first_name = models.CharField(max_length=250, null=True, blank=True) last_name = models.CharField(max_length=250, null=True, blank=True) address = models.CharField(max_length=250, null=True, blank=True) phone = models.CharField(max_length=12, null=True, blank=True) country = models.CharField(max_length=30, choices=OrderCountry.choices, null=True, blank=True) city = models.CharField(max_length=30, choices=OrderCity.choices, null=True, blank=True) district = models.CharField(max_length=30, choices=OrderDistrict.choices, null=True, blank=True) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = OrderShipmentManager()
class ProductAttributeValue(models.Model): class Meta: db_table = 'product_attribute_value' default_related_name = 'product_attribute_value' product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True, blank=True) product_attribute = models.ForeignKey(ProductAttribute, on_delete=models.SET_NULL, null=True, blank=True) product_variant = models.ForeignKey(ProductVariant, on_delete=models.SET_NULL, null=True, blank=True) product_variant_value = models.ForeignKey(ProductVariantValue, on_delete=models.SET_NULL, null=True, blank=True) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = ProductAttributeValueManager()
class Tag(models.Model): class Meta: db_table = 'tag' default_related_name = 'tag' name = models.CharField(max_length=250, null=False, blank=False) slug = models.CharField(max_length=250, unique=True, null=False, blank=False) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = TagManager()
class ProductImage(models.Model): class Meta: db_table = 'product_image' default_related_name = 'product_image' slug = models.CharField(max_length=250, null=False, blank=False) default = models.BooleanField(default=True) product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True, blank=True) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True)
class ProductVariant(models.Model): class Meta: db_table = 'product_variant' default_related_name = 'product_variant' name = models.CharField(max_length=250, choices=ProductVariantName.choices) product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True, blank=True) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = ProductVariantManager()
class ProductAttribute(models.Model): class Meta: db_table = 'product_attribute' default_related_name = 'product_attribute' name = models.CharField(max_length=250, null=False, blank=False) primary_price = models.FloatField(max_length=11, null=True, blank=True) sale_price = models.FloatField(max_length=11, null=True, blank=True) quantity = models.IntegerField(null=False, blank=False) product = models.ForeignKey( Product, on_delete=models.SET_NULL, null=True, blank=True ) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = ProductAttributeManager()
class Discount(models.Model): class Meta: db_table = 'discount' default_related_name = 'discount' code = models.CharField(max_length=150, null=False, blank=False) type = models.CharField(max_length=9, choices=DiscountType.choices, default=DiscountType.Percent) rate = models.FloatField(max_length=11, null=True, blank=True) is_active = models.BooleanField(default=True) apply_date = models.DateTimeField(null=False, blank=False) expiry_date = models.DateTimeField(default=None) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = DiscountManager()
class Account(AbstractUser): class Meta: db_table = 'account' default_related_name = 'account' username = models.CharField(max_length=50, unique=True, null=False, blank=False) password = models.CharField(max_length=250, null=False, blank=False) email = models.EmailField(max_length=250, unique=True, null=False, blank=False) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = AccountManager()
class Cart(models.Model): class Meta: db_table = 'cart' default_related_name = 'cart' customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True, blank=True) product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True, blank=True) quantity = models.IntegerField(null=False, blank=False) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = CartManager()
class Product(models.Model): class Meta: db_table = 'product' default_related_name = 'product' title = models.CharField(max_length=250, null=False, blank=False) content = models.CharField(max_length=1000, null=False, blank=False) slug = models.CharField(max_length=250, unique=True, null=False, blank=False) tag = models.ManyToManyField(Tag, through='ProductTag') collection = models.ForeignKey(Collection, on_delete=models.SET_NULL, null=True, blank=True) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = ProductManager()
class ProductVariantValue(models.Model): class Meta: db_table = 'product_variant_value' default_related_name = 'product_variant_value' name = models.CharField(max_length=250, null=False, blank=False) product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True, blank=True) product_image = models.ForeignKey(ProductImage, on_delete=models.SET_NULL, null=True, blank=True) product_vartiant = models.ForeignKey(ProductVariant, on_delete=models.SET_NULL, null=True, blank=True) create_at = models.DateTimeField(default=get_today_datetime(), null=True, blank=True) update_at = models.DateTimeField(default=None, null=True, blank=True) objects = ProductVariantValueManager()
def update_collection_by_id(self, data, id): return self.get_queryset().filter( id=id).update(**data, update_at=get_today_datetime())
def update_customer_shipment_by_id(self, data, id): return self.get_queryset().filter( id=id).update(**data, update_at=get_today_datetime())