[pyar] [django] Form & FormView

Ramiro Floydant ramirotrvnt18 en gmail.com
Lun Oct 21 15:55:32 ART 2013


Buenas tardes!

Estoy terminando el libro Practical Django Projects v2 donde la versión de
django es menor a 1.2.

Hasta ahora avancé muchísimo y ya estoy por terminarlo. Estoy haciendo todo
con la versión 1.5 y usando class based views.

La aplicación sirve para compartir snippets de código. Ya hice el
formulario de registro y ahora tengo que hacer un form para agregar
snippets:

models.py

class Snippet(models.Model):
    '''

    Representa un trozo de codigo.

    '''

    titulo              = models.CharField(max_length=255)
    lenguaje            = models.ForeignKey(Lenguaje)
    author              = models.ForeignKey(User)
    descripcion         = models.TextField()
    descripcion_html    = models.TextField(editable=False)
    code                = models.TextField()
    highlighted_code    = models.TextField(editable=False)
    tags                = TagField()
    fecha_publicacion   = models.DateTimeField(editable=False)
    fecha_actualizacion = models.DateTimeField(editable=False)

    objects = managers.SnippetManager()

forms.py

class AddSnippetForm(forms.Form):
    *def __init__(self, author, *args, **kwargs):
        super(AddSnippetForm, self).__init__(*args, **kwargs)
*
*        self.author = author*


    titulo      = forms.CharField(max_length=255)
    descripcion = forms.CharField(widget=forms.Textarea())
    code        = forms.CharField(widget=forms.Textarea())
    tags        = forms.CharField(max_length=255)
    lenguaje    = forms.ModelChoiceField(queryset=Lenguaje.objects.all())

    def save(self):
        return Snippet.objects.create(titulo=self.cleaned_data['titulo'],

descripcion=self.cleaned_data['descripcion'],
                                      code=self.cleaned_data['code'],
                                      tags=self.cleaned_data['tags'],

lenguaje=self.cleaned_data['lenguaje'])

En teoría lo que hace el __init__ es rellenar el campo author con el
usuario correspondiente para no mostrarlo en el form y que cualquiera pueda
elegir un usuario.

Acá empiezan los problemas:

1) En el libro super aparece así:
* *super(AddSnippetForm, self).__init__(*args, **kwargs)*:* # nótese los
dos puntos al final
Saqué los ":" y me lo tomó
2) Cuando hago runserver me sale este error:

__init__() takes at least 2 arguments (1 given)

Si saco el argumento author, no me tira error, pero lo necesito sí o sí.

Será un problema de compatibilidad por las versiones? Hay una nueva
forma de hacerlo funcionar?

Desde ya, muchas gracias.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20131021/5ecf3b07/attachment.html>


More information about the pyar mailing list