从views.py中,我正在调用位于同一目录(utils.py)中另一个文件中的函数。 utils.py错误,因为它无法从同一目录中的models.py导入模型。
我收到以下错误:
文件“ /home/myuser/site/core/utils.py”,第1行,在 2019-06-26 15:22:46,645:来自.models import( 2019-06-26 15:22:46,645:******************************************* ************ 2019-06-26 15:22:46,646:如果您看到导入错误并且不知道为什么, 2019-06-26 15:22:46,646:我们有专门的帮助页面来帮助您调试: 2019-06-26 15:22:46,646:https://help.pythonanywhere.com/pages/DebuggingImportError/ 2019-06-26 15:22:46,646:******************************************* ************ 2019-06-26 15:22:51,962:运行WSGI应用程序时出错 2019-06-26 15:22:51,963:ImportError:无法导入名称'电影'
utils.py
1: for a and b --> both over 21,000 and a >= b
2: for c
3: for b and d
views.py
from .models import(
Movie,
Album,
Book)
def get_weekly_tops():
start_date, end_date = getThisWeekStartEnd()
book = Book.objects.filter(release_date__range=[start_date, end_date]).filter(active=True).order_by('-amazon_rating')[:1]
theater = Movie.objects.filter(release_date__range=[start_date, end_date]).filter(active=True).filter(bluray_date__isnull=True).order_by('-imdb_rating')[:1]
bluray = Movie.objects.filter(bluray_date__range=[start_date, end_date]).filter(active=True).filter(bluray_date__isnull=False).order_by('-imdb_rating')[:1]
album = Album.objects.filter(release_date__range=[start_date, end_date]).filter(active=True).order_by('-base_rating')[:1]
if len(book) == 0:
book = Book.objects.filter(release_date__range=[start_date + timedelta(days=-6), end_date + timedelta(days=-6)]).filter(active=True).order_by('-amazon_rating')[:1]
if len(theater) == 0:
theater = Movie.objects.filter(release_date__range=[start_date + timedelta(days=-6), end_date + timedelta(days=-6)]).filter(active=True).filter(bluray_date__isnull=True).order_by('-imdb_rating')[:1]
if len(bluray) == 0:
bluray = Movie.objects.filter(bluray_date__range=[start_date + timedelta(days=-6), end_date + timedelta(days=-6)]).filter(active=True).filter(bluray_date__isnull=False).order_by('-imdb_rating')[:1]
if len(album) == 0:
album = Album.objects.filter(release_date__range=[start_date + timedelta(days=-6), end_date + timedelta(days=-6)]).filter(active=True).order_by('-base_rating')[:1]
return {'book':book, 'theater':theater, 'bluray':bluray, 'album':album}
models.py
from .utils import(
get_weekly_tops)
def index(request):
weekly_tops = get_weekly_tops()
return render(
request,
'index.html',
context={
'weekly_tops':weekly_tops
},
)
答案 0 :(得分:1)
您的问题是models.py
和utils.py
之间的循环导入。发生了什么事:
utils.py
从Movie
导入models.py
models.py
在定义utils.py
类之前先导入Movie
。。utils.py
因此无法从Movie
导入models
,因为utils
是在models
存在之前从Movie
导入的。就修复而言,您可以:
重组utils.py
,以便将models.py
所需的内容分离到另一个模块中。
从使用函数的任何函数中导入utils.py
方法。
例如,
def foo():
from .utils import unique_slug_generator
slug = unique_slug_generator()
答案 1 :(得分:0)
我认为问题在于您正在运行代码而不是调用
python manage.py runserver
运行代码时,从其他文件的导入似乎不起作用。我不确定为什么吗?只需运行服务器,而不是运行python文件。