【问题标题】:SystemCheckError: System check identified some issues:SystemCheckError:系统检查发现了一些问题:
【发布时间】:2021-01-13 17:31:12
【问题描述】:

我正在构建一个项目来下订单。当我运行 makemigrations 命令时,它会给出一个错误

SystemCheckError:系统检查发现了一些问题,我已从迁移中删除了迁移文件

追溯:

order.Order.price:(fields.E304)“Order.price”的反向访问器与“Order.product”的反向访问器冲突。
  HINT: Add or change a related_name argument to the definition for 'Order.price' or 'Order.product'.

order.Order.product: (fields.E304) 'Order.product' 的反向访问器与反向访问器冲突 '订单.价格'。

    HINT: Add or change a related_name argument to the definition for 'Order.product' or 'Order.price'.

我的models.py如下:

class Order(models.Model):
    company = models.ForeignKey(Company, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    price = models.ForeignKey(Product, on_delete=models.CASCADE)

    def __str__(self):
        return self.company + self.product + self.price

【问题讨论】:

    标签: python-3.x django


    【解决方案1】:

    related_name赞:

        company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name='company')
        product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='product')
        price = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='price')
    

    related_name 用于链接模型。特别是当您有多个1 模型链接到另一个模型时。与您的情况一样,这是强制性的。 See_this_answer 正确理解related_name 的使用。

    【讨论】:

    • related_name 是 url 的名称吗?
    • django.db.utils.OperationalError: 表“order_order”已经存在
    • 试试这个命令:python manage.py migrate --fake <appname>
    • 未知命令:'--fake' 输入'manage.py help'以供使用。
    • 请确保您已在 settings.py 中的INSTALLED_APPS 中输入您的 ... 并保留
    【解决方案2】:

    您的两个外键都引用了相同的模型Product,但没有定义不同的相关名称:

    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    
    price = models.ForeignKey(Product, on_delete=models.CASCADE)
    

    如果这不是错误,那么只需添加不同的related names

    【讨论】:

    • 先生,它现在在 makemigrations 之后给了我这个错误
    • django.db.utils.OperationalError: 表“order_order”已经存在
    • 您需要先回滚迁移或按照之前评论者的建议伪造它,因为您的数据库中已经创建了表。
    • 那么如何回滚我的迁移?我的意思是它的任何命令还是我必须手动删除数据库?
    猜你喜欢
    • 2022-08-21
    • 2017-01-03
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 2023-02-09
    • 2013-04-12
    相关资源
    最近更新 更多