【发布时间】:2018-05-29 22:22:01
【问题描述】:
我有一个应用程序 notes 和模型名称定义为
notes/models.py
from shorturls.models import ShortUrl
class Note(models.Model):
# columns here
def __str___(self):
return self.title
@receiver(post_save, sender=Note)
def post_save_note_receiver(sender, instance, created, *args, **kwargs):
if instance and created:
ShortUrl.objects.create(note=instance)
和另一个应用程序shorturls 存储带有模型的每条记录的短 URL
shorturls/models.py
from notes.models import Note
class ShortUrl(models.Model):
note = models.OneToOneField(Note, on_delete=models.CASCADE, blank=True)
short_key = models.CharField()
def __str__(self):
return self.short_key
@receiver(pre_save, sender=ShortUrl)
def pre_save_short_url_receiver(sender, instance, *args, **kwargs):
instance.short_key = unique_short_key_generator(instance)
但是在python manage.py makemigrations 上,它给出了错误
File "path_to_app/shorturls/models.py", line 7, in <module>
from notes.models import Note
ImportError: cannot import name 'Note'
【问题讨论】:
-
更新了问题并删除了该行。这是错误添加的。
-
似乎存在循环导入,因为在
Note中我正在导入ShortUrl以在post_save上调用ShortNote的create,因为我必须为ShortUrl创建记录每次创建新注释时。在ShortUrl中,我正在导入Note以分配OneToOneField。如果这是循环导入的原因,在这种情况下如何解决
标签: django django-models django-2.0