Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/03/2013, 07:22
tu_alvaro
 
Fecha de Ingreso: enero-2011
Mensajes: 11
Antigüedad: 13 años, 3 meses
Puntos: 0
Duda con consultas ManytoMany

Hola a todos estoy aprendiendo Python y Django,para practicar estoy haciendo un website que permita a los usuarios subir canciones, clasificadas por géneros e instrumentos. Los géneros e instrumentos se añaden desde el admin y las pistas se pueden añadir desde el front estando registrado como usuario tambien.

Hay varias cosas que se que no estoy haciendo bien, una de ellas es que no almacena con las pistas el autor, ni siquiera ha creado en la tabla un campo para ello, algo estoy haciendo mal con el model. foreignkey user. Seria de gran ayuda si alguien me da una orientacion sobre esto.

Mi otra y principal duda es que cuando entre en pistas.html deberian de salir desplegados con casillas todos los generos permitiendo pulsar en varios y realizar una busqueda de pistas en funcion de los generos seleccionados. En este momento solamente despliega todas las pistas.
No se si esto debe de hacerse con un form o como debe hacerse, pido tambien en esto un poco de ayuda.

Aqui esta mi código de la app música.

models.py**************************

Código:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class generos(models.Model):
	nombre = models.CharField(max_length=250)
	def __unicode__(self):
		return self.nombre

class instrumentos(models.Model):
	nombre = models.CharField(max_length=250)
	def __unicode__(self):
		return self.nombre

class pista(models.Model):

	def url(self,filename):
		ruta = "Pistas/%s/%s"%(self.nombre.str(filename))
		return ruta
	nombre	= models.CharField(max_length=200)
	descripcion	= models.TextField(max_length=300)
	audio 	= models.FileField(upload_to='pistas')
	autor	= models.ForeignKey(User)
	status	= models.BooleanField(default=True)
	generos	= models.ManyToManyField(generos, related_name='pistas')
	instrumentos	= models.ManyToManyField(instrumentos, related_name='pistas')
	def __unicode__(self):
		informacionPista = "%s %s"%(self.nombre,self.audio)
		return informacionPista
views.py********************************

Código:
from django.shortcuts import render_to_response
from django.template import RequestContext
from impromusic.apps.musica.forms import subirpistaForm
from impromusic.apps.musica.models import pista
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
def subir_pista_view(request):
	info = "Inicializando"
	if request.user.is_authenticated():
		if request.method == "POST":
			form = subirpistaForm(request.POST, request.FILES)
			if form.is_valid():
				nombre = form.cleaned_data['nombre']
				descripcion = form.cleaned_data['descripcion']
				audio = request.FILES['audio']
				p = pista()
				p.nombre = nombre
				p.descripcion = descripcion
				p.audio	= audio
				p.status = True
				p.save()
				info = "Se guardo satisfactoriamente"
			else:
				info = "informacion con datos incorrectos"
		form = subirpistaForm()
		ctx = {'form':form, 'informacion':info}
		return render_to_response('musica/subirpista.html',ctx,context_instance=RequestContext(request))
	else:
		return HttpResponseRedirect('/')
pistas.html***********

Código:
{% extends 'base.html' %}
{% block title %}Lista de pistas ...{% endblock %}
{% block content %}
<h1>Pistas</h1>
<br>
{% if user.is_authenticated %}
	<a href="{% url 'vista_subir_pista' %}">Subir tu cancion</a>
{% endif %}
{% if pistas %}
	{% for p in pistas %}
		<p><a href="/pista/{{p.id}}/">{{p.nombre}}</a></p>
	{% endfor %}
{% else %}
	<h2>No hay pistas activas</h2>
{% endif %}
{% endblock %}