在django中,迁移未应用于数据库

时间:2017-03-26 20:44:52

标签: python mysql django database

我通过删除字段并添加一些字段以及添加新表来更新数据库中某些表的某些字段。我跑:

python manage.py makemigrations
python manage.py migrate

我没有检测到任何更改,也没有应用任何更改。

在django admin中我没有看到新表,当我点击向数据库中添加新记录时,它会显示旧字段。这也反映在数据库中,因为它显示旧字段而不是新表。

我删除了数据库中的所有表并删除了每个应用中的所有迁移,只剩下 init .py而且我仍然遇到这个让我感到困惑的错误,因为它如何显示我删除的旧字段和没有记录,因为我删除了表格和迁移?

有问题的代码:

from __future__ import unicode_literals
from django.db import models
from src.profiles.models import Profiles

# Create your models here.
class Product(models.Model):
    name = models.CharField(max_length=200, primary_key=True)
    description = models.CharField(max_length=1000)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

class ProductsOwned(models.Model):
    ownedID = models.ForeignKey(Profiles.user)
    product = models.ForeignKey(Product.name)
    purchaseDate = models.DateTimeField(auto_now=True)
    expiryDate = models.DateTimeField()

    def __str__(self):
        return self.name

如果您需要任何澄清或有任何疑问,请询问。

编辑:我可以删除模型中的所有代码,但仍然不会检测到任何更改。

编辑2:将迁移代码上传到pastebin:http://pastebin.com/GywuiCZj

编辑3:我正在编辑的应用是目录,我已安装的应用:

INSTALLED_APPS = [
    'profiles',
    'contact',
    'crispy_forms',
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'stripe',
    'checkout',
    'catalog',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

2 个答案:

答案 0 :(得分:0)

如果您的print_r($results)没有任何数据,并且删除与catalog应用相关的表格是安全的,那么您可以执行以下操作。

  1. 如果您使用的是MySQL,catalog
  2. DELETE FROM django_migrations where app = 'catalog'删除所有迁移。
  3. 现在做catalog\migrations
  4. 另外,在settings.py中列出应用程序的标准方法是首先使用django应用程序,然后使用第三方应用程序,将自己的应用程序设置为第三。

答案 1 :(得分:0)

由于某些原因,迁移文件可能会被标记为已迁移。

注意: 1.如果这是此应用中的1个迁移文件,则文件名将为0001_initial。您可能有可能先删除了名称的迁移文件。

  1. 我还建议在installed_apps中保留所有django应用程序,即django.contrib.admin,django.contrib.auth ...在您的自定义应用程序之上。
  2. 最后,如果没有任何效果,您可以解冻您的迁移文件。

    python manage.py migrate --fake core 0003

    python manage.py migrate --fake core zero (请注意这一点。它会解冻所有迁移文件)

    然后

    参考:fake/unfake migration