Django 1.8迁移怪异

时间:2015-04-10 21:17:08

标签: django django-1.8

Django 1.8似乎不喜欢我的应用名称 - "订单"。

当我使用1.8创建一个新的Django项目时,无论数据库类型(Postgres或SQLite)如何同步我的初始数据库以添加所有Django核心表。一切都按预期工作。

我可以使用几乎任何其他名称创建一个app模块,但是当我这样做时:

$ python manage.py startapp orders

orders添加到INSTALLED_APPS,然后添加基本模型,例如:

from django.db import models

@python_2_unicode_compatible
class Order(models.Model):
    created_on = models.DateTimeField(auto_now_add=True)
    account = models.ForeignKey(Account)
    is_complete = models.BooleanField(default=False)

    class Meta():
        app_label = 'Orders'
        ordering = ['-created_on']

    def __str__(self):
        return 'Order #{} for {}'.format(self.pk, self.account)

然后执行:

$ python manage.py makemigrations

我明白了:

No changes detected in app 'orders'

我尝试过Python 2.7.8和Python 3.4。我尝试过不同的虚拟环境,无论我称之为Django项目,我都得到完全相同的结果。如果我甚至包括" _orders"在app模块名称的任何地方都会发生完全相同的结果。

我已经无数次清除了.pyc个文件。我删除了我的数据库并重新创建了它。我不知道发生了什么,但迁移对于我刚刚完成的1.7.7项目非常有用。

这是我设置的相关部分。如果您还有其他需要,请告诉我们:

DEBUG = True

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'myapp',
        'USER': 'postgres',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '5432'
    }
}

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'accounts',
    'animals',
    'lib',
    'orders',
)

有人有什么想法吗?我不知所措。

1 个答案:

答案 0 :(得分:2)

您的应用标签是大写的 - 它不会被识别为orders中显示的小写应用INSTALLED_APPS