首页 > 解决方案 > 数据库具有自定义视图时的 Django 迁移错误

问题描述

姜戈 3.1。

应用文件夹: stocks

里面有设置的项目文件夹: main

我有这个模型:

class Bar(models.Model):
    stock = models.CharField(max_length=10)
    timestamp = models.DateTimeField()
    date = models.DateField()
    time = models.TimeField()
    open = models.DecimalField(max_digits=6, decimal_places=2)
    high = models.DecimalField(max_digits=6, decimal_places=2)
    low = models.DecimalField(max_digits=6, decimal_places=2)
    close = models.DecimalField(max_digits=6, decimal_places=2)
    is_regular = models.BooleanField()
    change = models.DecimalField(max_digits=10, decimal_places=4)

在 SQLite 数据库中,我daily_bottoms使用 SQliteStudio 从该模型创建了视图。

现在我正在尝试迁移,因为添加了另一个字段。makemigrations工作正常,但尝试迁移时出现错误:

django.db.utils.OperationalError: error in view daily_bottoms: no such table: main.stocks_bar

如果我删除视图,那么它将迁移,但我想每次都避免这种情况。

如何让它发挥作用?

标签: djangodjango-orm

解决方案


如果您的表不是由 Django 管理的,您应该设置

 class Meta:
       managed = False

在您的模型上记录

如果为 False,则不会对该模型执行数据库表的创建、修改或删除操作。如果模型表示现有表或已通过其他方式创建的数据库视图,这将很有用


推荐阅读