feat: cart

This commit is contained in:
2024-11-27 17:07:03 +01:00
parent f1b25b1fdf
commit fa1d904db5
15 changed files with 448 additions and 109 deletions
+90
View File
@@ -0,0 +1,90 @@
# Generated by Django 5.1.3 on 2024-11-27 12:10
import django.db.models.deletion
import uuid
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("shop", "0005_productprice_price_with_tax"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name="Cart",
fields=[
(
"uuid",
models.UUIDField(
default=uuid.uuid4,
primary_key=True,
serialize=False,
verbose_name="uuid",
),
),
(
"creation_date",
models.DateTimeField(
auto_now_add=True, verbose_name="fecha de creación"
),
),
(
"user",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
verbose_name="usuario",
),
),
],
options={
"verbose_name": "carrito",
"verbose_name_plural": "carritos",
},
),
migrations.CreateModel(
name="CartItem",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"quantity",
models.PositiveIntegerField(default=1, verbose_name="cantidad"),
),
(
"cart",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="items",
to="shop.cart",
verbose_name="carrito",
),
),
(
"product",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="shop.product",
verbose_name="producto",
),
),
],
options={
"verbose_name": "línea de carrito",
"verbose_name_plural": "líneas de carrito",
},
),
]
+39
View File
@@ -6,6 +6,10 @@ from django.utils import timezone
from django.utils.text import gettext_lazy as _
from django.utils.text import slugify
from django.contrib.auth import get_user_model
User = get_user_model()
class TimestampedModel(models.Model):
creation_date = models.DateTimeField(
@@ -398,3 +402,38 @@ class Order(TimestampedModel):
class Meta:
verbose_name = _("pedido")
verbose_name_plural = _("pedidos")
class Cart(models.Model):
uuid = models.UUIDField(default=uuid4, primary_key=True, verbose_name=_("uuid"))
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
verbose_name=_("usuario"),
blank=True,
null=True,
)
creation_date = models.DateTimeField(
auto_now_add=True, verbose_name=_("fecha de creación")
)
class Meta:
verbose_name = _("carrito")
verbose_name_plural = _("carritos")
class CartItem(models.Model):
cart = models.ForeignKey(
"shop.Cart",
on_delete=models.CASCADE,
related_name="items",
verbose_name=_("carrito"),
)
product = models.ForeignKey(
"shop.Product", on_delete=models.CASCADE, verbose_name=_("producto")
)
quantity = models.PositiveIntegerField(default=1, verbose_name=_("cantidad"))
class Meta:
verbose_name = _("línea de carrito")
verbose_name_plural = _("líneas de carrito")