Bootstrap 5 Portfolio Template For Developers

Creando un CRUD de Productos Relacionados con Categorías en Django

Another post by Fabianijg.dev

En el mundo del desarrollo web, la creación de un sistema de gestión de productos que esté vinculado a categorías es un escenario común y esencial. En este artículo, exploraremos cómo construir un CRUD (Crear, Leer, Actualizar, Eliminar) de productos relacionados con categorías utilizando Django, basándonos en el código del proyecto Freshcart. Aprenderemos a desarrollar un sistema que permita a los administradores gestionar sus productos y categorías de manera eficiente y organizada.

Introducción

Un sistema de gestión de productos y categorías es esencial para cualquier tienda en línea o plataforma de comercio electrónico. Nos permitirá agregar, editar y eliminar productos, así como organizarlos en categorías relevantes. A través de este artículo, vamos a aprender cómo implementar este sistema utilizando el framework Django, un potente marco de desarrollo web de Python.

Creando el CRUD de Productos

Dentro del código de Freshcart, podemos encontrar la implementación de las vistas y modelos necesarios para crear un CRUD de productos. El siguiente fragmento de código es un ejemplo de cómo se puede lograr esto en Django:

# Fragmento del código para crear y administrar productos en Freshcart

class Product(models.Model):
    # Campos del modelo Product
    name = models.CharField(max_length=255)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    description = models.TextField()
    # Otros campos

class ProductForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = ['name', 'category', 'price', 'description', 'images']
        # Otros campos del formulario

class create_product(View):
    form_class = ProductForm
    template_name = '../templates/dashboard/add-product.html'
    
    def get(self, request, *args, **kwargs):
        categories = Category.objects.all()
        form = self.form_class(initial=self.initial)
        return render(request, self.template_name, {'form': form, 'categories': categories})
    
    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        if form.is_valid():
            product = form.save(commit=False)
            if 'images' in request.FILES:
                product.images = request.FILES['images']
            product.save()
            name = form.cleaned_data.get('name')
            messages.success(request, f'Producto creado: {name}')
            return redirect(to='/')
        return render(request, self.template_name, {'form': form})

Explicación del Código

El código anterior presenta la creación de un nuevo producto utilizando una vista basada en clase en Django. Aquí hay una explicación paso a paso:

  1. Modelo de Producto (Product): Definimos el modelo Product, que contiene campos como el nombre, la categoría, el precio, la descripción, entre otros. El campo category se relaciona con el modelo Category para vincular cada producto a una categoría específica.
  2. Formulario de Producto (ProductForm): Creamos un formulario utilizando ProductForm, que hereda de forms.ModelForm. Este formulario se utiliza para recopilar información de un nuevo producto.
  3. Vista para Crear un Producto (create_product): La vista create_product maneja tanto la presentación del formulario como la lógica de creación de un producto. Cuando se accede a la vista a través de un método GET, se muestra el formulario con las categorías disponibles. Cuando se envía el formulario mediante un método POST, se valida y guarda el producto en la base de datos.

Conclusión

La implementación de un CRUD de productos relacionados con categorías en Django es una tarea esencial para cualquier aplicación de comercio electrónico. Siguiendo el ejemplo del proyecto Freshcart, hemos demostrado cómo diseñar y desarrollar este sistema utilizando Django. A través de la creación de modelos, formularios y vistas, hemos logrado construir una funcionalidad completa para agregar y administrar productos en la plataforma.

Este artículo ha proporcionado una visión general de cómo implementar un CRUD de productos en Django. Para explorar más a fondo y adaptar esta funcionalidad a tus necesidades específicas, te animamos a explorar más la documentación de Django y experimentar con el código proporcionado en tu propio entorno de desarrollo.

Fuente de Código: Código adaptado del proyecto Freshcart. (URL de referencia: [enlace al código original del proyecto Freshcart])

[enlace al código original del proyecto Freshcart]: (https://freshcart.fabianijg.dev)

View Live Demo View on GitHub

"Walking on water and developing software from a specification are easy if both are frozen."

Edward V Berard

Fabián

I'm a full stack developer with a passion for software development and UX. You can follow me via the various channels below:
comments powered by Disqus

Interested in hiring me for your project?

Looking for an experienced full-stack developer to build your web app or ship your software product? To start an initial chat, just drop me an email at fabianijgonzalez@gmail.com or use the form on the contact page.