feat: add __dict__ method to models for JSON serialization

This commit is contained in:
2026-04-22 09:15:32 +02:00
parent dc967c114f
commit 3cbca38c32
+30
View File
@@ -25,6 +25,11 @@ class User(AbstractUser):
choices = RegisterStatus.choices, choices = RegisterStatus.choices,
default = RegisterStatus.CONFIRMATION_REQUIRED default = RegisterStatus.CONFIRMATION_REQUIRED
) )
def __dict__(self):
return {
"username": self.username,
"fullname": self.get_full_name()
}
class VerificationCode(models.Model): class VerificationCode(models.Model):
class VerificationModes(models.TextChoices): class VerificationModes(models.TextChoices):
@@ -56,6 +61,11 @@ class Category(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
def __dict__(self):
return {
"name": self.name
}
class Image(models.Model): class Image(models.Model):
name = models.CharField(max_length=200, default="") name = models.CharField(max_length=200, default="")
image = models.ImageField(upload_to='images/') image = models.ImageField(upload_to='images/')
@@ -64,6 +74,13 @@ class Image(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
def __dict__(self):
return {
"name": self.name,
"image": self.image.url,
"alt": self.alt
}
class Product(models.Model): class Product(models.Model):
name = models.CharField(max_length=200, default="") name = models.CharField(max_length=200, default="")
description = models.TextField(default = "") description = models.TextField(default = "")
@@ -86,6 +103,19 @@ class Product(models.Model):
"""Retorna la cantidad de IVA""" """Retorna la cantidad de IVA"""
return round(self.price * VAT_RATE, 2) return round(self.price * VAT_RATE, 2)
def __dict__(self):
return {
"name": self.name,
"description": self.description,
"briefdesc": self.briefdesc,
"price": self.price,
"stock": self.stock,
"category": dict(self.category),
"primary_image": self.primary_image,
"secondary_images": [dict(secondary_image) for secondary_image in self.secondary_images],
"creator": dict(self.creator)
}
class StockReservation(models.Model): class StockReservation(models.Model):
STATUS_ACTIVE = "active" STATUS_ACTIVE = "active"