迁移Django模型时如何解决错误?

时间:2019-06-19 12:42:26

标签: python django postgresql

我想迁移我的模型以在本地PgSQL DB上创建表。 这不是我第一次在此配置上执行此操作,但是这次失败了。

我的操作:

1)我删除了旧数据库 jlb_inventory

2)我重新创建了数据库 jlb_inventory

3)我删除了应用程序目录/migration上的“ 0001_initial”

4)我运行了命令python manage.py makemigrations => 错误

models.py

# Table Etude
class Study(models.Model):
    study_name = models.CharField(max_length=255, null=False)



class Inventory(models.Model):
    watercourse = models.CharField(max_length=255, null=False)
    town = models.CharField(max_length=255, null=False)
    number_resorts = models.IntegerField(null=False)
    inventory_date = models.DateField(null=False)
    fk_study = models.ForeignKey(Study, on_delete=models.CASCADE)



class Resort(models.Model):
    index_resort = models.IntegerField(null=False)
    name_resort = models.CharField(max_length=255)
    fk_inventory = models.ForeignKey(Inventory, on_delete=models.CASCADE)


class Taxon(models.Model):
    name_taxon = models.CharField(max_length=255, null=False)
    gi = models.IntegerField(default=0)


class Sample(models.Model):
    MICRO_HABITAT_CHOICES = (
        ('1', 'Habitat1'),
        ('2', 'Habitat2'),
        ('3', 'Habitat3'),
        ('4', 'Habitat4'),
        ('5', 'Habitat5'),
        ('6', 'Habitat6'),
        ('7', 'Habitat7'),
        ('8', 'Habitat8'),
    )

    taxon_quantity = models.IntegerField(null=False)
    fk_taxon = models.ForeignKey(Taxon, on_delete=models.CASCADE)
    fk_resort = models.ForeignKey(Resort, on_delete=models.CASCADE)

还有我的错误

django.db.utils.ProgrammingError: relation "business_data_entry_taxon" does not exist
LINE 1: ...ame_taxon", "business_data_entry_taxon"."gi" FROM "business_...

有人知道这是什么问题吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

如果您删除数据库并重新创建新的数据库,那么我正常就测试了您的应用及其工作(django 2.2),但是我认为您需要为数据库进行首次迁移。

因此,删除应用程序INSTALLED_APPS,然后重新创建数据库并删除所有迁移。然后运行makemigrations并进行迁移,然后将您的应用添加到INSTALLED_APPS,再次运行makemigrations并进行迁移。

答案 1 :(得分:0)

我发布了一个请求,但是没有关于该解决方案的结构化说明。

在我的应用程序中,我有4种表单,其中2种称为ChoiceField。 我尝试在path中注释所有urls.py,并运行命令makemigrationsmigrate就是这样 ...

我认为,在执行命令之前,Django“编译”(或类似的东西)我的代码并尝试设置ChoiceField,但他可以找到一些东西,因为我之前删除了数据库。

我鼓励某人对此帖子发表评论,以获取更多解释,然后,我将编辑该aswer。