Foros del Web » Programando para Internet » Python »

Comentarios Django

Estas en el tema de Comentarios Django en el foro de Python en Foros del Web. Buenas tardes: Tengo que entregar un clon de youtube como trabajo fin de asignatura y no consigo implementar los comentarios os explico: Tengo una relacion ...
  #1 (permalink)  
Antiguo 06/02/2014, 13:44
 
Fecha de Ingreso: febrero-2014
Mensajes: 6
Antigüedad: 10 años, 9 meses
Puntos: 0
Comentarios Django

Buenas tardes:
Tengo que entregar un clon de youtube como trabajo fin de asignatura y no consigo implementar los comentarios os explico:
Tengo una relacion 1:N o foreignKeyField entre mi clase comentario y mi clase video, la idea es que cuando subo un comentario en la base de datos se asocie directamente al video que corresponde, le paso la id del video a la vista y lo recojo con el get_object_or_404 y cuando se lo intento asignar al foreignKeyField ya me salta el error.
A ver si pudierais echarme una manilla.
Gracias!!

Si necesitais el codigo mas tarde os lo intento subir ;)
  #2 (permalink)  
Antiguo 06/02/2014, 15:04
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Comentarios Django

Si nos pusieras el código y el error, te podríamos ayudar.
  #3 (permalink)  
Antiguo 06/02/2014, 16:04
 
Fecha de Ingreso: febrero-2014
Mensajes: 6
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Comentarios Django

Ok aqui os dejo el codigo:
Models.py la clase UploadVideo es la que se relaciona con la clase comentario
Código:
class UploadVideo(models.Model):
	titulo=models.CharField(max_length=128)
	video = models.FileField(upload_to = 'video')
	descripcion=models.CharField(max_length=300)
	fecha=models.DateTimeField(auto_now=True)
	keywords=models.CharField(max_length=256) #Cada palabra clave separada por espacios de otra
	puntuacion=models.CharField(max_length=6,choices=(('1','Uno'),('2','Dos'),('3','Tres'),('4','Cuatro'),('5','Cinco')),null=True, blank=True)
	categoria=models.ForeignKey('Category',related_name="categoriavideo",null=True, blank=True)
	propietario = models.ForeignKey(User)


	def __unicode__ (self):
		return self.titulo

class Category(models.Model):
	name=models.CharField(max_length=128)
	def __unicode__ (self):
		return self.name


class Comentario(models.Model):
	fecha=models.DateTimeField(auto_now=True)
	gustar=models.CharField(max_length=6,choices=(('0','No'),('1','Si')),blank=True,null=True)
	contenido=models.TextField()
	comentariosVideo=models.ForeignKey('UploadVideo',related_name="comentarios-video",null=True, blank=True)
	usuario=models.ForeignKey(User,related_name="comentarios-usuario",blank=True,null=True)
views,py:
Código:
def ComentarVideo(request,video_id):
	video=get_object_or_404(UploadVideo,pk=video_id)
	if request.user.is_authenticated:
		if request.method == 'POST' : #Si el formulario ha sido correcto
			comentar = Comentario()
			comentar.usuario = request.user
			comentar.usuario__id = request.user.id
			comentar.comentariosVideo=ESTA ES LA LINEA QUE NO CONSIGO PONER
			formulario = Comentar(request.POST, request.FILES, instance = comentar)
			if formulario.is_valid():
				formulario.save()
				return HttpResponseRedirect('/')
		else :
				formulario=Comentar()
		return render_to_response('comentar.html', {'formulario':formulario}, context_instance=RequestContext(request))
La linea en rojo es la linea que no se que poner para que se asigne el video al comentario.
Gracias de antemano.
Un saludo.
  #4 (permalink)  
Antiguo 06/02/2014, 16:34
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Comentarios Django

Con
Código Python:
Ver original
  1. comentar.comentariosVideo=video
Debería ser mas que suficiente. Si no funciona y te arroja un error por favor publica el error.

Otra coas elimina esta linea.
Código Python:
Ver original
  1. comentar.usuario__id = request.user.id
  #5 (permalink)  
Antiguo 06/02/2014, 16:45
 
Fecha de Ingreso: febrero-2014
Mensajes: 6
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Comentarios Django

Muchisimas gracias, es mucho mas facil de lo que creia jajaja estaba montando un follon. Ya se asigna automaticamente, ya solo falta mostrar los comentarios,
Este es el HTML de los detalles del video:
Código:
{% extends 'index.html' %}
	
	{% block content %}

			{% if videoDetail %}
			<center><h4>{{videoDetail.titulo}}</h4></center>
				<video width="500" height="380" controls="controls">
				<source src= {{MEDIA_URL}}{{videoDetail.video}} type="video/webm">
				<object data="" width="320" height="240">
				<embed width="320" height="240" src= {{MEDIA_URL}}{{video.video}}>
				</object></p></p>
				</video>
				<p>Descripcion: {{videoDetail.descripcion}}</p>
				<p>Fecha de subida: {{videoDetail.fecha}}</p>
				<p>Autor: {{videoDetail.propietario}}</p>
				<p>Puntuacion: {{videoDetail.puntuacion}}</p>
				<script type="text/javascript">
					function ventana ()
					{
						var nuevaventana;

						nuevaventana=open("","","background-size=100%");
						nuevaventana.document.write("<title>{{videoDetail.titulo}}</title><video width=100% height=100% controls='controls'> <source src= {{MEDIA_URL}}{{videoDetail.video}} type='video/webm'></video>")
					}
				</script>
				<a href="/add_video/video/puntuar/{{videoDetail.id}}"><input type="button" value="Puntuar"></a>
				<input type="button" value="Ver en nueva ventana" onclick="ventana()">
				<a href="/add_video/video/comentar/{{videoDetail.id}}"><input type="button" value="Comentar"></a>
			{% endif %}
	{% endblock %}
Como haria para mostrarlos, se que tengo que acceder a la relacion ForeignKey mediante el related name que le di en el models.py o eso tengo entendido pero no se bien como hacerlo.
Gracias de antemano.
Un saludo
  #6 (permalink)  
Antiguo 06/02/2014, 17:59
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Comentarios Django

Puedes obtener los comentarios a través de la relación inversa que posee video.

https://docs.djangoproject.com/en/de...elated-objects
  #7 (permalink)  
Antiguo 07/02/2014, 03:52
 
Fecha de Ingreso: febrero-2014
Mensajes: 6
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Comentarios Django

Ya he conseguido los comentarios pero en dos vistas y urls separadas, que esta bien, pero lo ideal seria poder poner los comentarios debajo del video, eso es algo que siempre me he preguntado, ¿como puedo poder la funcionalidad de dos vistas en una url? Ahora mismo tengo puesto un boton de ver comentarios en el video que te lleva a otra url, estas son las vistas:
Código:
def ComentaryList (resquest,video_id):
	videoseleccionado=UploadVideo.objects.get(pk=video_id)
	list=videoseleccionado.comentariosvideo.all()
	context={'comentaryList':list}
	return render (resquest,'comentaryList.html', context)

def ComentarVideo(request,video_id):
	video=get_object_or_404(UploadVideo,pk=video_id)
	if request.user.is_authenticated:
		if request.method == 'POST' : #Si el formulario ha sido correcto
			comentar = Comentario()
			comentar.usuario = request.user
			comentar.comentariosVideo=video
			formulario = Comentar(request.POST, request.FILES, instance = comentar)
			if formulario.is_valid():
				formulario.save()
				return HttpResponseRedirect('/')
		else :
				formulario=Comentar()
		return render_to_response('comentar.html', {'formulario':formulario}, context_instance=RequestContext(request))

Etiquetas: comentarios, django, field
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:35.