Django ImportError: cannot import name
Django ImportError: cannot import name
我有一个应用程序 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'
您的两个模型文件之间存在循环依赖关系。
您可以在一对一字段中使用 as 字符串:
class ShortUrl(models.Model):
note = models.OneToOneField('notes.Note', on_delete=models.CASCADE, blank=True)
然后您可以删除 from notes.models import Note
以打破循环依赖。
我有一个应用程序 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
为模型
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'
您的两个模型文件之间存在循环依赖关系。
您可以在一对一字段中使用 as 字符串:
class ShortUrl(models.Model):
note = models.OneToOneField('notes.Note', on_delete=models.CASCADE, blank=True)
然后您可以删除 from notes.models import Note
以打破循环依赖。