我正在写一些设计上结合在一起的django应用程序。但我有小分子导入问题。我知道它的设计可能不好,所以请举例说明更好的解决方案,但我似乎找不到更适合的设计。如果没有更好的设计,如何解决这个问题?
它基本上是两个django应用程序,有些型号的应用程序相互关联。简而言之,系统是一个基于事件的系统。所以有一个事件模型和一个任务模型。它们存在于不同的应用程序、事件和任务中。当事件被触发时,我需要检查附加任务是否被解决,并且当任务被解决时,它可以触发其他一些事件。
因此,在事件中,我需要存储有关任务的数据(以检查这些任务是否已解决),在任务中,我需要存储有关事件的数据(在解决事件时触发事件)。
以下是我的应用程序中的一些示例代码:
Events app
models.py
from tasks.models import Task
class Event(models.Model):
...
tasks = models.ManyToManyField(Task, help_text=_("Tasks we need to check if are solved before triggering this event."))
...
Tasks app
models.py
from events.models import Event
class Task(models.Model):
...
events = models.ManyToManyField(Event, help_text=_("Events to trigger when this task i solved."))
...
当我尝试验证以下内容时,这会导致导入问题:
AttributeError: 'module' object has no attribute 'Event'
那么如何解决这个问题呢?我尝试使用一些django助手函数,希望能有所帮助,更具体地说,我尝试使用django.db.models.get_app和get_model函数来导入模型,而不是直接导入模型,但我仍然遇到问题。
当然,我可以将它们收集到同一个应用程序中,但我清楚地相信它们应该生活在不同的应用程序中,因为它们处理不同的事情。但是的,他们是相互依赖的。如果我不能解决进口问题,对如何设计这种不同的想法?
当然,我可以使用一些通用关系,但这实际上会使其他人更难理解,因为它没有指定应该与之相关的内容类型。