首先,它不是关于循环Model
引用。我能找到很多关于这些的答案。你知道吗
我正在建立一个应用程序,让你很容易地定义提醒你的设置。因此REMINDERS
设置如下所示:
REMINDERS = [
{
'reminder_id': 'my-id',
'reminder_class': 'students.reminders.ExpiredAvailabilityEmailReminder',
},
]
在这个应用程序(reminders
)中,我为这些提醒提供了一个基类,其中包含一些默认行为。要定义提醒,我唯一要做的就是:
from reminders.base_reminders import ReminderEmail
from .models import Student
class ExpiredAvailabilityEmailReminder(ReminderEmail):
template_name = 'students/emails/setting_expired.html'
def get_queryset(self):
return Student.objects.filter(
is_active=True,
setting_expired__lt=datetime.date.today())
management命令使用django.utils.module_loading.import_by_path
在handle
中导入此reminder_class
-字符串,但失败的原因是:
django.core.exceptions.ImproperlyConfigured: Error importing module studenten.reminders: "No module named base_reminders"
因为它变成了一个循环引用。如何为我的应用程序的用户提供一个子类基类,而不会遇到这个问题?
谢谢。你知道吗
这个问题与python2中的默认导入顺序有关。如果您在
students_app/reminders.py
中,并且您有from reminders.base_reminders import ReminderEmail
,则不清楚reminders
模块是指自身还是指您的应用程序(也称为提醒)。要解决这个问题,可以在python2.5+中使用from __future__ import absolute_import
(或者在默认情况下使用python3)这将确保
reminders
导入使用reminders
应用程序,而不是相对的reminders
模块。你知道吗另一个修正是一个文档,它不鼓励人们命名他们的模块
reminders
,以避免这种命名冲突。你知道吗相关问题 更多 >
编程相关推荐