Foros del Web » Programando para Internet » Python »

tengo errores al producir modelForm

Estas en el tema de tengo errores al producir modelForm en el foro de Python en Foros del Web. Hola, intento seguir el ejemplo de ModalForm de la documentacion oficial de django pero creo que ya lo tengo todo y tengo un error que ...
  #1 (permalink)  
Antiguo 23/02/2012, 22:21
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 5 meses
Puntos: 4
tengo errores al producir modelForm

Hola, intento seguir el ejemplo de ModalForm de la documentacion oficial de django pero creo que ya lo tengo todo y tengo un error que no se como solucionar,
El error es al mostrar el formulario, y dice:
----------------------------------------
NameError at /new_book/
name 'TITLE_CHOICES' is not defined
Request Method: GET
Request URL: http://127.0.0.1:8000/new_book/
Django Version: 1.3.1
Exception Type: NameError
Exception Value:
name 'TITLE_CHOICES' is not defined


Tengo los codigos como sigue:
cms/mysite/models.py

Código Python:
Ver original
  1. from django.db import models
  2. from django.forms import ModelForm
  3.  
  4. TITLE_CHOICES = (
  5.     ('MR', 'mr.'),
  6.     ('MRS','Mrs.'),
  7.     ('MS','Ms.'),
  8. )
  9.  
  10. class Author(models.Model):
  11.     name =  models.CharField(max_length=100)
  12.     title = models.CharField(max_length=3, choices=TITLE_CHOICES)
  13.     birth_date = models.DateField(blank=True, null=True)
  14.  
  15.     def __unicode__(self):
  16.         return self.name
  17.  
  18. class Book(models.Model):
  19.     name = models.CharField(max_length=100)
  20.     authors = models.ManyToManyField(Author)
  21.  
  22. class AuthorForm(ModelForm):
  23.     class Meta:
  24.         model = Author
  25.  
  26. class BookForm(ModelForm):
  27.     class Meta:
  28.         model = Book
cms/mysite/forms.py
Código Python:
Ver original
  1. from django import forms
  2.  
  3. class AuthorForm(forms.Form):
  4.     name = forms.CharField(max_length=100)
  5.     title = forms.CharField(max_length=3,
  6.                 widget=forms.Select(choices=TITLE_CHOICES))
  7.     birth_date = forms.DateField(required=False)
  8.  
  9. class BookForm(forms.Form):
  10.     name = forms.CharField(max_length=100)
  11.     authors = forms.ModelMultipleChoiceField(queryset=Author.objects.all())

cms/mysite/views.py
Código Python:
Ver original
  1. # Create your views here.
  2. from django.template.loader import get_template
  3. from django.template import Context
  4. from django.http import HttpResponse
  5. from forms import BookForm
  6.  
  7. def new_book(request):
  8.     if request.method == 'POST':
  9.         form = BookForm(request.POST)
  10.         if form.is_valid():
  11.             return HttpResponseRedirect('/new_book/thanks/')
  12.     else :
  13.         form = BookForm()
  14.         return render_to_response('new_book.html',{'form':form,})

y las urls los tengo asi:
Código Python:
Ver original
  1. from cms.mysite import views
  2.  
  3. urlpatterns = patterns('',  
  4.     (r'^new_book/$', views.new_book),
  5.  
  6. )

----------------------------
cms/mysite/templates/new_book.html

Código HTML:
Ver original
  1. <form action="/set_new_book/" method="post">
  2.     <p><label>Name:</label>
  3.        {{ form.name}}
  4.     </p>
  5.     <p><label>Authors:</label>
  6.        {{ form.authors }}
  7.     </p>
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com

Última edición por Copia; 23/02/2012 a las 22:27
  #2 (permalink)  
Antiguo 23/02/2012, 22:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: tengo errores al producir modelForm

En cms/mysite/forms.py no tienes definido TITLE_CHOICES, lo único que tienes que hacer es importarlo de models.py
  #3 (permalink)  
Antiguo 23/02/2012, 23:23
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: tengo errores al producir modelForm

Perdone mi bajo conocimiento de python, intento de esta manera:
Código Python:
Ver original
  1. from django import forms
  2. import mysite.forms
  3. class AuthorForm(forms.Form):
  4.     name = forms.CharField(max_length=100)
  5.     title = forms.CharField(max_length=3,
  6.                 widget=forms.Select(choices=mysite.forms.TITLE_CHOICES))
  7.     birth_date = forms.DateField(required=False)

El error es este ahora:
AttributeError at /new_book/
'module' object has no attribute 'forms'

Supongo que estoy importando mal.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #4 (permalink)  
Antiguo 24/02/2012, 00:16
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: tengo errores al producir modelForm

El segundo import no lo veo necesario. Suponiendo que AuthorForms esta en cms/mysite/forms.py
  #5 (permalink)  
Antiguo 24/02/2012, 13:33
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: tengo errores al producir modelForm

Gracias por su respuesta, pero si quito el segundo import el error es este:
NameError at /new_book/
name 'mysite' is not defined

y si luego lo dejo asi
title = forms.CharField(max_length=3,
widget=forms.Select(choices=forms.TITLE_CHOICES))

el error es este:
AttributeError at /new_book/
'module' object has no attribute 'TITLE_CHOICES'

que extraño.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #6 (permalink)  
Antiguo 24/02/2012, 16:15
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: tengo errores al producir modelForm

Como ya te había dicho en el comentario de arriba tienes que importar TITLE_CHOICES de modes.py en forms.py

Aquí esta mas o menos como debe de ser
Código Python:
Ver original
  1. #forms.py
  2. from mysite.models import TITLE_CHOICES

Obviamente despues solo dejas:
Código Python:
Ver original
  1. widget=forms.Select(choices=TITLE_CHOICES))
  #7 (permalink)  
Antiguo 24/02/2012, 20:08
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: tengo errores al producir modelForm

Gracias, mi problema era que no sabia como importar, perdon. Ademas se tiene que importar lo que sigue Author dentro de forms.py

Ya tengo el formulario gracias, amigo.
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com

Etiquetas: django
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 19:23.