2012-01-06 19 views
5

Tengo un proyecto de Django en Eclipse PyDev.Django Models "IndexError: lista de índices fuera de rango" Pydev

Tengo un views.py archivo que tiene la línea:

from models import ingredient2 

En models.py tengo:

from django.db import models 
class ingredient2(models.Model): 
    ingredient  = models.CharField(max_length=200) 

Cuando trato de ejecutar la aplicación me sale el siguiente error:

File "C:\Python27\lib\site-packages\django\db\models\base.py", line 54, in __new__ 
kwargs = {"app_label": model_module.__name__.split('.')[-2]} 
IndexError: list index out of range 

He sincronizado la base de datos y he iniciado el funcionamiento del servidor.

entré en base.py y añade 2 declaraciones de impresión (sí, probablemente no debería editar archivos de Django):

if getattr(meta, 'app_label', None) is None: 
      # Figure out the app_label by looking one level up. 
      # For 'django.contrib.sites.models', this would be 'sites'. 
      model_module = sys.modules[new_class.__module__] 
      print model_module #ADDED 
      print model_module.__name__ #ADDED 
      kwargs = {"app_label": model_module.__name__.split('.')[-2]} 

que se impriman:

<module 'models' from 'C:\Users\Tine\workspace\slangen\slangen2\bolig\models.pyc'> 

models 

manage.py está contenida dentro de la carpeta bolig. Creo que la etiqueta correcta de la aplicación sería "bolig". La aplicación funcionó hace varios meses y ahora, cuando vuelvo a ella, algo no está bien. He estado creando otros proyectos en PyDev.

+1

Esta puede ser su mismo problema: http://stackoverflow.com/questions/4382032/defining-a-model-class-in-django-shell-fails – AJJ

Respuesta

0

Bueno, realmente no es una respuesta, pero ... Terminé creando un nuevo proyecto django y luego copiando en mi código. Eso solucionó el problema.

0

También recibía el error kwargs = {"app_label": model_module.__name__.split('.')[-2]} al usar PyDev. En mi caso, el proyecto no se actualizó antes de intentar ejecutarlo. Tan pronto como lo refresqué, todo estuvo bien nuevamente.

8

Añadir una clase de meta con un app_label dentro de su definición de clase modelo:

class Foo: 
    id = models.BigIntegerField(primary_key=True) 
    class Meta: 
     app_label = 'foo' 
0

me encontré con este problema usando Eclipse, Django y PyDev. Necesitaba tener la aplicación (en lugar de algún archivo .py por ejemplo) seleccionada en PyDev Package Explorer (panel izquierdo) antes de hacer clic en Ejecutar para que todo funcione correctamente.

-1

en mi caso, models.py contiene modelos

al importar modelos a otra .py, digo views.py no aumenta de error cuando corro views.py

pero cuando corro models.py, plantea el mismo error.

así que sólo no se ejecutan en el models.py

3

tuve algo similar

en lugar de

from models import ingredient2 

intento:

from your_app_name.models import ingredient2 
+0

tha ¡nks! trabajó para mi –

Cuestiones relacionadas