[Django-es] No me guarda la ruta al subir imagen

209 views
Skip to first unread message

Ricardo.Oax

unread,
May 18, 2010, 4:27:03 PM5/18/10
to Django-es
Bueno gracias por su tiempo, mi problema:

tengo el siguiente codigo en views.py para subir una imagen a
media_upload/noticias/
este codigo si sube la imagen a la carpeta anterior, pero no me guarda
los datos en la BD
uso postgre, el formulario con 13 campos, y uno de imagen, el campo
donde debria guardarse
la ruta dela imagen se llama ruta un varchar (255). si me sube la
imagen pero mo me guarda
la ruta en la BD (y ningun otro dato del fomulario) ayuda plz

def noticias_agregar(request):
if request.method == 'POST':
form = NoticiasForm(request.POST, request.FILES)
if form.is_valid():
handle_uploaded_file(request.FILES['ruta'])
form.save()
return HttpResponseRedirect('enviado.html')
else:
form = NoticiasForm()
return render_to_response('app_noticias/noticias_agregar.html',
{'form': form})


def handle_uploaded_file(f):
file_name = os.path.join('media_upload/noticias', f.name)
destination = open(file_name, 'wb+')
for chunk in f.chunks():
destination.write(chunk)
destination.close()

--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.

dieg...@gmail.com

unread,
May 18, 2010, 7:24:14 PM5/18/10
to djan...@googlegroups.com
Tengo el presentimiento de que NoticiaForm es un ModelForm, si estoy en lo cierto, mira esto:




--
Diego Andrés Sanabria
Ingeniería de Sistemas Universidad Distrital
about:me http://www.google.com/profiles/diegueus9
cel 3015290609

Ricardo.Oax

unread,
May 19, 2010, 10:48:35 AM5/19/10
to Django-es

Pues lo he resuelto, el problema estaba bastante facil, el modelo
estaba declarado mal, la clave primaria de la tabla estaba declarada
como campo de texto, y no como un AutoField. de todas maneras dejo
todo mi codigo de subir imagenes, fotos, archivos para que lo puedan
usar.

==================================================================
Models.py
==================================================================

class Noticias(models.Model):
idnoticia = models.AutoField(primary_key=True) # This field type
is a guess.
idoficio = models.ForeignKey(Oficio, db_column='idoficio')
titulo = models.CharField(max_length=255)
subtitulo = models.CharField(max_length=255)
escritor = models.CharField(max_length=80)
fuente = models.CharField(max_length=45)
fcaptura = models.DateField()
hcaptura = models.TimeField()
detenidopor = models.CharField(max_length=100)
sintesis = models.CharField(max_length=25)
medios = models.CharField(max_length=100)
resumen = models.TextField()
ruta = models.ImageField(upload_to='media_upload/noticias/',
blank=True, null=True)
mime = models.CharField(max_length=100)
class Meta:
db_table = u'noticias'
def __str__(self):
return '%s' % (self.idnoticia)

==================================================================
Forms.py
==================================================================

class NoticiasForm(ModelForm):
fcaptura = forms.DateField(widget=adminwidgets.AdminDateWidget,
required=False)
hcaptura = forms.TimeField(widget=adminwidgets.AdminTimeWidget,
required=False )
detenidopor = ChoiceField(choices=DETENIDOPOR_CHOICES)
ruta = forms.ImageField(help_text="introduzca su imagen aca")
class Meta:
model = Noticias
exclude = ('idnoticia','mime')

==================================================================
Views.py
==================================================================

Roylan Suarez Reyes

unread,
May 19, 2010, 7:59:30 AM5/19/10
to djan...@googlegroups.com
Hola Colegas

Tengo una vista de donde muestro cada noticia del sitio, pero quiero al final de la noticia poner el nombre de la anterior y proxima noticia a la que se está mostrando.

este es mi modelo:

class Encuentros(models.Model):
    taller = models.ForeignKey(Taller)
    tema = models.CharField(max_length=100)
    desarrollo = models.TextField()
    autor = models.CharField(max_length=100)
    fecha_pub = models.DateField('Fecha')
    visitas = models.IntegerField(blank=True)
    bibliografia = models.ManyToManyField(Enlaces, blank=True)
    habilitar_comentarios = models.BooleanField()
    publicado = models.BooleanField()

cualquier ayuda será bienvenida

salu2


Ramiro Morales

unread,
May 19, 2010, 12:28:53 PM5/19/10
to djan...@googlegroups.com
2010/5/19 Roylan Suarez Reyes <royla...@pri.jovenclub.cu>:
> Hola Colegas
>
> Tengo una vista de donde muestro cada noticia del sitio, pero quiero al
> final de la noticia poner el nombre de la anterior y proxima noticia a la
> que se está mostrando.
>
> este es mi modelo:
>
> class Encuentros(models.Model):
>     taller = models.ForeignKey(Taller)
>     tema = models.CharField(max_length=100)
>     desarrollo = models.TextField()
>     autor = models.CharField(max_length=100)
>     fecha_pub = models.DateField('Fecha')
>     visitas = models.IntegerField(blank=True)
>     bibliografia = models.ManyToManyField(Enlaces, blank=True)
>     habilitar_comentarios = models.BooleanField()
>     publicado = models.BooleanField()

¿anterior y próxima con respecto a que criterio? orden
cronológico e creación de las noticias?, ¿PK?,
¿alguno de los campos?

--
Ramiro Morales | http://rmorales.net

Roylan Suarez Reyes

unread,
May 19, 2010, 9:35:23 AM5/19/10
to djan...@googlegroups.com
Hola Colegas

Tengo una vista de donde muestro cada noticia del sitio, pero quiero al final de la noticia poner el nombre de la anterior y proxima noticia a la que se está mostrando.

este es mi modelo:

class Encuentros(models.Model):
    taller = models.ForeignKey(Taller)
    tema = models.CharField(max_length=100)
    desarrollo = models.TextField()
    autor = models.CharField(max_length=100)
    fecha_pub = models.DateField('Fecha')
    visitas = models.IntegerField(blank=True)
    bibliografia = models.ManyToManyField(Enlaces, blank=True)
    habilitar_comentarios = models.BooleanField()
    publicado = models.BooleanField()

cualquier ayuda será bienvenida

salu2



Roylan Suarez Reyes

unread,
May 19, 2010, 1:12:38 PM5/19/10
to djan...@googlegroups.com
El mié, 19-05-2010 a las 13:28 -0300, Ramiro Morales escribió:
2010/5/19 Roylan Suarez Reyes <royla...@pri.jovenclub.cu>:
> Hola Colegas
>
> Tengo una vista de donde muestro cada noticia del sitio, pero quiero al
> final de la noticia poner el nombre de la anterior y proxima noticia a la
> que se está mostrando.
>
> este es mi modelo:
>
> class Encuentros(models.Model):
>     taller = models.ForeignKey(Taller)
>     tema = models.CharField(max_length=100)
>     desarrollo = models.TextField()
>     autor = models.CharField(max_length=100)
>     fecha_pub = models.DateField('Fecha')
>     visitas = models.IntegerField(blank=True)
>     bibliografia = models.ManyToManyField(Enlaces, blank=True)
>     habilitar_comentarios = models.BooleanField()
>     publicado = models.BooleanField()

¿anterior y próxima con respecto a que criterio? orden
cronológico e creación de las noticias?, ¿PK?,
¿alguno de los campos?

Cronológico, es decir la fecha de publicación.


Ramiro Morales

unread,
May 19, 2010, 9:22:19 PM5/19/10
to djan...@googlegroups.com
2010/5/19 Roylan Suarez Reyes <royla...@pri.jovenclub.cu>:
> El mié, 19-05-2010 a las 13:28 -0300, Ramiro Morales escribió:
>
> 2010/5/19 Roylan Suarez Reyes <royla...@pri.jovenclub.cu>:
>> Hola Colegas
>>
>> Tengo una vista de donde muestro cada noticia del sitio, pero quiero al
>> final de la noticia poner el nombre de la anterior y proxima noticia a la
>> que se está mostrando.
>>
>> este es mi modelo:
>>
>> class Encuentros(models.Model):
>>     taller = models.ForeignKey(Taller)
>>     tema = models.CharField(max_length=100)
>>     desarrollo = models.TextField()
>>     autor = models.CharField(max_length=100)
>>     fecha_pub = models.DateField('Fecha')
>>     visitas = models.IntegerField(blank=True)
>>     bibliografia = models.ManyToManyField(Enlaces, blank=True)
>>     habilitar_comentarios = models.BooleanField()
>>     publicado = models.BooleanField()
>
> ¿anterior y próxima con respecto a que criterio? orden
> cronológico e creación de las noticias?, ¿PK?,
> ¿alguno de los campos?
>
> Cronológico, es decir la fecha de publicación.

Echale una mirada a los métodos

get_next_by_XXX() y get_previous_by_XXX()

que deberían estar disponibles en cada instancia de
tu modelo (Encuentros).

http://docs.djangoproject.com/en/1.2/ref/models/instances/#django.db.models.Model.get_next_by_FOO

XXX en tu caso sería fecha_pub

Luego contanos como te va. ¡Suerte!

--
Ramiro Morales | http://rmorales.net

Roylan Suarez Reyes

unread,
May 20, 2010, 4:38:11 PM5/20/10
to djan...@googlegroups.com
Hola Ramiro

Muchas gracias por la ayuda, me funciono perfecto pero ahora se presentó otro problemas. el modelo está relacionado con otra tabla por lo que los encuentros estan por categorías y solo necesito mostrar el registro anterior y próximo al registro actual aqui paso la funcion para que la veas.

def encuentro(request, id_encuentro):

#Encuentro Seleccionado
encuentro = Encuentros.objects.get(id=id_encuentro)

#Registros anterior y proximo al actual
try:
next = encuentro.get_next_by_fecha_pub()
except encuentro.DoesNotExist:
next= False

try:
previous = encuentro.get_previous_by_fecha_pub()
except encuentro.DoesNotExist:
previous= False


#Respuesta HTml
return render_to_response('taller/encuentros.html', {
'top_noticias': top_noticias,
'top_comentarios':
                                                        'previous': previous,
'next': next, })






-- 
Ramiro Morales  |  http://rmorales.net


Roylan Suarez Reyes

unread,
May 20, 2010, 4:47:05 PM5/20/10
to djan...@googlegroups.com
Ya lo resolvi, no había leido la documentacion completa, le pase entre parentesis el id de la categoria y funciono:


#Registros anterior y proximo al actual
try:
next = encuentro.get_next_by_fecha_pub(taller=id_taller)

except encuentro.DoesNotExist:
next= False

try:
previous = encuentro.get_previous_by_fecha_pub(taller=id_taller)
except encuentro.DoesNotExist:
previous= False

Muchas gracias

Reply all
Reply to author
Forward
0 new messages