[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