【问题标题】:Django - Conflict between my django models.py filesDjango - 我的 django models.py 文件之间的冲突
【发布时间】:2020-07-21 06:56:42
【问题描述】:

我没有看到与以下内容有任何冲突。我究竟做错了什么?我收到以下错误ImportError: cannot import name 'Business' from 'business.models' 我假设我可能正在执行某种类型的循环,但我没有看到它。:

#links/models.py
from django.db import models

class LinkType(models.Model):
    link_type = models.CharField(max_length=30)

    def __str__(self):
        return self.link_type

from business.models import Business

class Link(models.Model):
    name = models.CharField(max_length=60)
    business = models.ForeignKey(Business, on_delete=models.CASCADE)
    link_type = models.ForeignKey(LinkType, on_delete=models.CASCADE)

    class Meta:
        unique_together = ['business', 'link_type']

    def __str__(self):
        return self.name

#business/models.py
from django.db import models
from links.models import LinkType

class Business(models.Model):
    name = models.CharField(max_length=255)
    main_link_type = models.ForeignKey(LinkType, on_delete=models.CASCADE) 

    def __str__(self):
        return self.name

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    是的,有一个循环导入。在业务模型中,您正在导入链接模型,在链接模型中,您正在导入业务模型。

    以下是类似问题的链接,可能会有所帮助:

    ImportError: Cannot import name X

    Django cannot import name x

    【讨论】:

      【解决方案2】:

      Django 相关字段也接受 to 参数作为 string。该值应采用 app_name.ModelName 格式。

      class Link(models.Model):
          business = models.ForeignKey('business.Business', on_delete=models.CASCADE)
         # rest of your code
      
      # business/models.py
      
      class Business(models.Model):
          main_link_type = models.ForeignKey('links.LinkType', on_delete=models.CASCADE)
         # rest of your code

      【讨论】:

      • 您能否在答案中添加我需要导入的内容。例如上面的Link模型我需要做from business.models import Business吗?
      • 删除 Business 和 LinkType 模型中的导入。然后更新上面两行。仅删除一个导入也可能有效。也许也检查一下。
      • 在我的回答中,to 是字符串,它不涉及或不依赖任何类型的导入。 @帕多加。另外,请关注twothreezarsix 的评论。
      猜你喜欢
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 2020-07-09
      相关资源
      最近更新 更多