Skip to content

Instantly share code, notes, and snippets.

@sebastian-code
Created August 9, 2016 00:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sebastian-code/ba43ffcdf45081629df07ae47d84335c to your computer and use it in GitHub Desktop.
Save sebastian-code/ba43ffcdf45081629df07ae47d84335c to your computer and use it in GitHub Desktop.
Una vista que registra el valor de un campo de manera automatica, tomando la informacion a partir de uno de los objetos disponibles en la sesion.
{% extends 'base.html' %}
{% load staticfiles %}
{% load crispy_forms_tags %}
{% block title %} Crear Articulo {% endblock %}
{% block content %}
<div class="container" style="padding-top:30px; padding-bottom: 30px;">
<div class="8u skel-cell-important">
<section>
<form enctype="multipart/form-data" action="" method="post">
{% csrf_token %}
{{ form|crispy }}
<input type="submit" name="crear_articulo" value="Publicar">
</form>
</section>
</div>
</div>
{% endblock content %}
class Articulo(models.Model):
"""Clase para definir el modelo y estructura de que expone la vista arriba
creada.
"""
creado_en = models.DateTimeField(auto_now_add=True, editable=False)
modificado_en = models.DateTimeField(auto_now=True)
titulo = models.CharField(max_length=50, null=False, unique=True)
contenido = models.TextField(null=False)
autor = models.ForeignKey(settings.AUTH_USER_MODEL)
categoria = models.ForeignKey(Categoria)
tags = TaggableManager()
slug = AutoSlugField(populate_from='titulo', unique=True, editable=False)
estado = models.CharField(max_length=1, choices=ESTADO, default='b')
class Meta:
verbose_name = "Articulo"
verbose_name_plural = "Articulos"
ordering = ('-creado_en',)
def __str__(self):
return self.titulo
class CrearArticulo(LoginRequiredMixin, CreateView):
"""Vista usando concepto de 'Class Based Views' heredando CreateView e
implementando el mixin LoginRequiredMixin de django-braces, asi se
habilita la opcion de permitir acceso a las funcionalidades del portal,
sin necesidad de dar acceso al lado administrativo del mismo.
"""
model = Articulo
success_url = '/articulos/'
fields = ['titulo', 'contenido', 'categoria', 'tags', 'estado']
def form_valid(self, form):
form.instance.autor = self.request.user
return super(CrearArticulo, self).form_valid(form)
@bgarcial
Copy link

Un ilustrativo ejemplo que en su momento no supe como interpretar, pero que leyendo hoy en la documentación lo ví bastante sencillo.

Recordé tus buenos oficios desde la primera vez que me paraste bolas para charlar.
@sebastian-code gracias por el altruismo digital men

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment