Django: невозможно импортировать модель из другого приложения
Я надеялся обратиться за помощью по этой проблеме, которая у меня есть. Я все еще изучаю Django (и Python) и сталкиваюсь с этой конкретной проблемой, на которую я не могу найти ответ. Я создал новое приложение под названием "новости" и настроил модель для приложения. Используя интерфейс администратора я создал некоторые данные. Из моего приложения "страницы" я пытаюсь импортировать News_Article
класс и получение ошибки нет модуля с именем News.models
.
Я изо всех сил пытаюсь понять, что происходит не так здесь.
любая помощь была бы весьма признательна.
реж структуры
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
newsmodel.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
Pagesviews.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)
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:MeWebsitesBolton_GCBolton_GCPagesviews.py in <module>, line 4
Python Executable: c:python27python.exe
Python Version: 2.7.9
Python Path:
['C:MeWebsitesBolton_GC',
'c:python27libsite-packagessetuptools-18.0.1-py2.7.egg',
'C:WINDOWSSYSTEM32python27.zip',
'c:python27DLLs',
'c:python27lib',
'c:python27libplat-win',
'c:python27liblib-tk',
'c:python27',
'c:python27libsite-packages']
Server time: Tue, 14 Jul 2015 13:21:14 +0100
2 ответов
переключатель
from News.models import News_Article
to
from Bolton_GC.News.models import News_Article
чтобы уточнить ответ @TheLifeOfSteve, все операторы импорта всегда относятся к вашему manage.py файл.
Если manage.py файл был на пути Bolton_GC / Bolton_GC, тогда правильный оператор импорта будет просто:
from News.models import News_Article
но в текущей структуре каталогов следующий правильный ответ, как указал Стив.
from Bolton_GC.News.models import News_Article