Django-迁移后未创建表

时间:2020-10-06 07:04:00

标签: django postgresql django-forms digital-ocean django-migrations

我想使用Postgres数据库向DigitalOcean服务器上的Django项目添加新功能。问题是,一切在本地服务器上都可以正常工作,但是在生产服务器上,没有为新模型创建新表。我已删除所有迁移文件,再次进行了迁移,但是再次看不到数据库上的新表。请帮我解决这个问题。我的确切错误:

relation "documents_app_employee" does not exist LINE 1: INSERT INTO "documents_app_employee" ("fin", "name", "surnam...

这是我的代码:

models.py

class Employee(models.Model):
    fin = models.CharField(max_length=10, blank=True, null=True)
    name = models.CharField(max_length=20)
    surname = models.CharField(max_length=20)

    def __str__(self):
        return self.name + " " + self.surname

forms.py

class CreateEmployeeForm(ModelForm):
    def save(self, commit=False):
        employee = super(CreateEmployeeForm, self).save(commit=False)
        Employee.objects.create(
            fin = employee.fin,
            name = employee.name,
            surname = employee.surname,
        )

    class Meta:
        model = Employee
        fields = '__all__'

用于删除和撤消迁移的脚本:

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc"  -delete
pip3 uninstall django
pip3 install -r requirements.txt
python3 manage.py makemigrations
python3 manage.py migrate

但是又得到了

ProgrammingError at /employee_document

relation "documents_app_employee" does not exist
LINE 1: INSERT INTO "documents_app_employee" ("fin", "name", "surnam...

1 个答案:

答案 0 :(得分:0)

在pythonanywhere上托管时,在迁移数据库时遇到了完全相同的问题。经过许多不同的方法,包括删除和撤消迁移并再次重做。

然后,我终于使用默认的 db.sqlite3 数据库,并从数据库中导出SQL(使用sqlite3浏览器),并使用在线sql converter将其转换为Postgresql,并在 localhost postgres数据库,其中表是使用 pgadmin 中的获取的SQL查询创建的。

然后将其投入生产时,效果很好。

* 很抱歉,如果我的答案不是很清楚,我是作为用户而不是仅仅作为浏览器的Stackoverflow的新手。如有疑问,我将编辑/评论我的答案。