2015-07-14 8 views
5

Speravo di cercare assistenza su questo problema che sto avendo. Sto ancora imparando Django (e Python) e ho incontrato questo particolare problema per il quale non sono in grado di trovare una risposta. Ho creato una nuova app chiamata "News" e ho configurato il modello per l'app. Utilizzando l'interfaccia di amministrazione ho creato alcuni dati. Dalla mia app "Pages", sto cercando di importare la classe News_Article e ottenere l'errore Nessun modulo chiamato News.models.Django: impossibile importare il modello da un'altra app

Sto lottando per vedere cosa sta andando storto qui.

Qualsiasi assistenza sarebbe molto apprezzata.

DIR Struttura

Bolton_GC [Folder] 
- Bolton_GC [Folder] 
    - News [Folder] 
    - Migrations [Folder] 
    - __init__.py 
    - __init__.pyc 
    - admin.py 
    - admin.pyc 
    - models.py 
    - models.pyc 
    - tests.py 
    - views.py 
    - Pages [Folder] 
    - Migrations [Folder] 
    - __init__.py 
    - __init__.pyc 
    - admin.py 
    - admin.pyc 
    - models.py 
    - models.pyc 
    - tests.py 
    - views.py 
    - views.pyc 
    - static [Folder] 
    - templates [Folder] 
    - __init__.py 
    - __init__.pyc 
    - settings.py 
    - settings.pyc 
    - urls.py 
    - urls.pyc 
    - wsgi.py 
    - wsgi.pyc 
- db.sqlite3 
- manage.py 

notizie \ model.py

from django.db import models 
from datetime import datetime 

class News_Article(models.Model): 
    class Meta: 
     ordering = ['news_datetime_submitted'] 
    news_title = models.CharField(max_length=75, verbose_name="News Title") 
    news_text = models.CharField(max_length=300, verbose_name="News Text") 
    news_active = models.BooleanField(default=True, verbose_name="News Active") 
    news_datetime_submitted = models.DateTimeField(default=datetime.now(), verbose_name="News Date") 

    def __str__(self): 
     return self.news_title 

Pagine \ views.py

from django.shortcuts import HttpResponse, get_object_or_404, render 
from models import Page, Announcement, Menu, Sub_Menu 
from django.core.exceptions import ObjectDoesNotExist 
from News.models import News_Article 
import pdb 

# Helper Functions 

def get_announcement(): 
    try: 
     return Announcement.objects.get(announcement_active=True) 
    except ObjectDoesNotExist: 
     return None 

def clean_url(dirtyurl, badlist): 
    for item in badlist: 
     dirtyurl = dirtyurl.replace(item,'') 
    return dirtyurl[1:-1] 

# View functions 

def page(request): 
    rDict = {} 
    path = clean_url(request.path, ['"', "'"]) 
# pdb.set_trace() 
    p = get_object_or_404(Page, urlconf_text=path) 
    rDict['p'] = p 
    announcement = get_announcement() 
    if not announcement == None: 
     rDict['announcement'] = announcement 
    rDict['sitenav'] = path 
    rDict['menu'] = Menu.objects.all().order_by('menu_position') 
    return render(request, 'en/public/page.html', rDict) 

errore

ImportError at /home/ 

No module named News.models 

Request Method:  GET 
Request URL: http://127.0.0.1:8000/home/ 
Django Version:  1.8.2 
Exception Type:  ImportError 
Exception Value:  

No module named News.models 

Exception Location:  C:\Me\Websites\Bolton_GC\Bolton_GC\Pages\views.py in <module>, line 4 
Python Executable: c:\python27\python.exe 
Python Version:  2.7.9 
Python Path:  

['C:\\Me\\Websites\\Bolton_GC', 
'c:\\python27\\lib\\site-packages\\setuptools-18.0.1-py2.7.egg', 
'C:\\WINDOWS\\SYSTEM32\\python27.zip', 
'c:\\python27\\DLLs', 
'c:\\python27\\lib', 
'c:\\python27\\lib\\plat-win', 
'c:\\python27\\lib\\lib-tk', 
'c:\\python27', 
'c:\\python27\\lib\\site-packages'] 

Server time: Tue, 14 Jul 2015 13:21:14 +0100 
+0

È interessante notare che funziona nel file urls.py, quindi deve essere un problema di struttura della cartella ma sono perplesso. – Smurf

+0

prova ad usare "Bolton_GC.News.models import News_Article" - Voglio vedere se è la struttura – TheLifeOfSteve

+0

Provato anche questo, lo stesso numero – Smurf

risposta

16

Interruttore

from News.models import News_Article 

a

from Bolton_GC.News.models import News_Article 
+4

Se stai usando PyCharm, assicurati di regolare la radice del contenuto del tuo progetto da Preferenze -> Struttura del progetto – Mike

3

Proprio di approfondire @ risposta di TheLifeOfSteve, tutte le dichiarazioni di importazione sono sempre relativi al file manage.py.

Se il file manage.py era al percorso Bolton_GC/Bolton_GC, quindi l'istruzione import corretta sarebbe solo:

from News.models import News_Article 

Ma nella struttura di directory corrente, ciò che segue è la risposta corretta come sottolineato da Steve.

from Bolton_GC.News.models import News_Article 
Problemi correlati