Guardar el usuario que crea un objeto desde un CreateView

Supongamos que tenemos un formulario asociado a un modelo que tiene una FK hacia User. El formulario de entrada normalmente no contendrá ningún desplegable para seleccionar el usuario, sinó que lo que queremos es que al guardar automáticamente se guarde en el objeto creado por el formulario la referencia hacia el usuario que lo creó.

Esto lo podemos hacer fácilmente sobreescribiendo el método form_valid de nuestra class, sería una cosa así:

class AddObjectView(CreateView):
    model = NuestroModelo
    form_class = ElFromularioSinElUser
    success_url = reverse_lazy('objeto-guardado')

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.user = self ...


Django class based views - Epílogo

El mundo de las class based views como se puede ver da para mucho. La posibilidad de sobrescribir funciones, cambiar parámetros e ir combinando mixins hasta obtener la funcionalidad que necesitamos nos permite reutilizar mucho codigo y de manera elegante.

En este último artículo de las serie veremos alguna de las situaciones más habituales en las que nos podemos encontrar y cómo se resuelven.

 

El formulario por defecto no es el que yo quiero.

Es habitual que cuando editamos un objeto mediane un formulario nos encontremos que hay campos que no queremos que se editen. En ...


Django class based views - Listados

En este sexta entrega veremos cómo podemos mostrar listad de objetos, algo que normalmente va muy ligado al flujo de trabajo asociado al CRUD.

Para mostrar listados (paginados o no) Django nos proporciona la clase ListView que podemos encontrar en django.views.generic.list. Esta clase és hija de MultipleObjectTemplateResponseMixin y de BaseListView. Esta última clase es la que hace el grueso del trabajo, ya que es hija de MultipleObjectMixin y de View implementando el método get.

Como en el caso de las vistas oreintadas al trabajo con CRUD también en este caso tenemo una plantilla por ...


Django Class Based Views - CRUD

En esta qunta parte veremos cómo podemos gestoionar todo lo relacionado con un mantenimiento, el famoso CRUD (Create, Retrieve, Update, Delete). La parte de Retrieve ya la hemos visto, pero volveremos a ella para que nos quede un ejemplo completo. Partiremos del sigueinte modelo:

class Sample(models.Model):
    """this is just a sample model"""

    slug = models.SlugField(max_length=50, unique=True)
    name = models.CharField(max_length=100)
    ammount = models.IntegerField()
    comments = models.TextField(blank=True, null=True)

    class Meta:
        verbose_name = 'Sample'
        verbose_name_plural = 'Sample'

    def __unicode__(self):
        return self.name

Django además de DetailView nos proporciona las siguientes clases ya ...


Django Class Based Views - Mostrar un objeto

Empezamos con este artículo a ver cómo podemos utilizar las Django class based views con los modelos de datos. ¿Verdad que esto se pone cada vez más interesante? Hast el momento hemos visto un uso muy genérico de esta tecnología, pero con lo que ya sabemos deberíamos ser capaces de mostrar páginas web y gestionar el trabajo con formularios.

Es bastante común en las aplicaciones modernas que los datos vengan de algún sitio, es decir, que no estén codificados a fuego en el HTML. Lo más normal es que ...


Class Based Views - Formularios

En este apunte veremos cómo utilizar las generic class views para trabajar con formularios. Utilizaremos el mismo ejemplo que Django utiliza cuando trata de formularios. En la documentación hace referencia a un formulario de contacto creado como:

from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=100)
    message = forms.CharField()
    sender = forms.EmailField()
    cc_myself = forms.BooleanField(required=False)

y la vista asociada

def contact(request):
    if request.method == 'POST': # If the form has been submitted...
        form = ContactForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the ...

Django Class Based Views - TemplateView

En esta segunda parte veremos algunos de los usos más interesantes de las class based views para presentar información y ahorrarnos trabajo. En concreto nos concentraremos en 

TemplateView

Como vimos en la primera parte TemplateView nos ahorra mucho trabajo si lo comparamos con la manera tradicionar de hacer las cosas. Sólo por el hecho de que ya se pasa el RequestContext ya recomendaría pasarnoas al nuevo mundo de las Class Based Views, pero os lo perdáis todavía hay más!

TemplateView incormpora dos métodos más get_context_data y get.  El método get ...


Django Class Based Views - Introducción

Con Django 1.3 se introducen las "Class based views", una funcionalidad que nos permite modelar nuestras vistas como clases y que además intenta solucionar el no tener que escribir siempre el mismo tipo de código cuando mostramos una página web o hacemos o hacemos un mantenimiento ligado a un modelo de datos.

Las class based views nos permiten un nivel más alto de reutilización de nuestro código y permitiéndonos manter la cohesión de nuestras clasas. Hasta ahora o bien teníamos que ir creando las funciones dentro de la misma vista ...


Sobre el hosting de aplicaciones

En las listas de Django, tanto la internacional en inglés como la española, es habitual la pregunta de "qué hosting me recomendaríais", para desplegar una aplicación Django.

En APSL nos dedicamos a la programación de aplicaciones web sobre Django y a la administración de sistemas Linux. En lo concerniente al hosting intentaremos explicar en este artículo nuestra manera de entender este servicio.

Para hospedar aplicaciones Django existen alternativas como Gondor o ep.io que nos dan un servicio muy completo en la nube, con posibilidad de utilizar Redis o Celery en algunos casos ...


Entrevista de la fundación IBIT

La fundación IBIT nos ha hecho una video-entrevista sobre qué somo y como vivimos el sotware libre en APSL.

La fundación IBIT organizó en su día unos cursos de OpenERP, a los que asistimos, que nos sirvió para perderle el miedo al producto y que nos sirvieron mucho tanto para implantar el programa para nuestra propia gestión interna como para el desarrollo del proyecto Txerpa.


Página 1 de 3 1 2 3 »