diff --git a/files/api/v1/serializers.py b/files/api/v1/serializers.py index 2a2ab07..dcdb8fb 100644 --- a/files/api/v1/serializers.py +++ b/files/api/v1/serializers.py @@ -8,3 +8,9 @@ class FileUploadSerializer(serializers.ModelSerializer): model = FileUpload fields = ("file", "id") read_only_fields = ("id",) + + +class NoIDFileUploadSerializer(serializers.ModelSerializer): + class Meta: + model = FileUpload + fields = ("file", ) diff --git a/shop/api/v1/serializers.py b/shop/api/v1/serializers.py index bc4db35..eaacd32 100644 --- a/shop/api/v1/serializers.py +++ b/shop/api/v1/serializers.py @@ -1,7 +1,7 @@ from django.utils import timezone from rest_framework import serializers -from files.api.v1.serializers import FileUploadSerializer +from files.api.v1.serializers import FileUploadSerializer, NoIDFileUploadSerializer from shop.models import ( Product, ProductPrice, @@ -64,6 +64,7 @@ class ProductSerializer(serializers.ModelSerializer): class Meta: model = Product fields = ( + "id", "name", "description", "stock", @@ -77,16 +78,19 @@ class ProductSerializer(serializers.ModelSerializer): class ListProductSerializer(serializers.ModelSerializer): price = ProductPriceSerializer() tags = TagSerializer(many=True) + images = NoIDFileUploadSerializer(many=True, read_only=True) class Meta: model = Product fields = ( + "id", "name", "description", "stock", "is_digital_asset", "price", "tags", + "images", ) @@ -106,6 +110,11 @@ class CreateProductSerializer(serializers.ModelSerializer): is_digital_asset=validated_data.get("is_digital_asset"), url=validated_data.get("url"), ) + + tags = validated_data.get('tags') + for tag in tags: + instance.tags.add(tag) + ProductPrice.objects.create( product=instance, date=timezone.now(), diff --git a/shop/migrations/0006_alter_product_options_alter_productbatch_options_and_more.py b/shop/migrations/0006_alter_product_options_alter_productbatch_options_and_more.py new file mode 100644 index 0000000..1aed582 --- /dev/null +++ b/shop/migrations/0006_alter_product_options_alter_productbatch_options_and_more.py @@ -0,0 +1,47 @@ +# Generated by Django 5.0.6 on 2024-05-17 00:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("files", "0001_initial"), + ("shop", "0005_tag_alter_product_images_product_tags"), + ] + + operations = [ + migrations.AlterModelOptions( + name="product", + options={ + "ordering": ("id",), + "verbose_name": "Producto", + "verbose_name_plural": "Productos", + }, + ), + migrations.AlterModelOptions( + name="productbatch", + options={ + "verbose_name": "Remesa de producto", + "verbose_name_plural": "Remesas de productos", + }, + ), + migrations.AlterModelOptions( + name="tag", + options={"verbose_name": "Etiqueta", "verbose_name_plural": "Etiquetas"}, + ), + migrations.AlterField( + model_name="product", + name="images", + field=models.ManyToManyField( + blank=True, to="files.fileupload", verbose_name="Imágenes" + ), + ), + migrations.AlterField( + model_name="product", + name="tags", + field=models.ManyToManyField( + blank=True, to="shop.tag", verbose_name="Etiquetas" + ), + ), + ] diff --git a/shop/models.py b/shop/models.py index 7d50355..8e42bec 100644 --- a/shop/models.py +++ b/shop/models.py @@ -53,6 +53,7 @@ class Product(models.Model): class Meta: verbose_name = _("Producto") verbose_name_plural = _("Productos") + ordering = ('id', ) class ProductPrice(models.Model):