我有一個相當特殊的問題,django-admin.py不在應用程序目錄中爲模型創建表。我創建了一個PostgreSQL數據庫和用戶,然後授予此用戶數據庫的所有權限,然後將此數據庫包含在settings.py中。 settings.py的相關部分如下所示:Django不希望在遷移中包含模型 - PostgreSQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'crawler',
'USER': 'austinpowers',
'PASSWORD': '****',
'HOST': 'localhost',
'PORT': ''
}
}
由於manage.py dbshell運行良好,Django能夠訪問此數據庫。
現在我想的Django基於以下的應用「履帶式」 models.py文件創建表:
from django.db import models
class Files(models.Model):
id = models.IntegerField(primary_key=True, blank=False, null=False)
filename = models.TextField(blank=True, null=True)
status = models.IntegerField(blank=True, null=True)
def __unicode__(self):
return self.filename
class Meta:
verbose_name = 'File'
verbose_name_plural = 'Files'
class IpLog(models.Model):
id = models.IntegerField(primary_key=True, blank=False, null=False)
ip = models.TextField(blank=True, null=True)
time_changed = models.TextField(blank=True, null=True)
def __unicode__(self):
return self.time_changed
class Meta:
verbose_name = 'IP Log'
verbose_name_plural = 'IP Logs'
class Jobs(models.Model):
id = models.IntegerField(primary_key=True, blank=False, null=False)
run_no = models.IntegerField(blank=True, null=True)
shop = models.TextField(blank=True, null=True)
pzn = models.TextField(blank=True, null=True)
status = models.IntegerField(blank=True, null=True)
def __unicode__(self):
return self.shop + ": " + self.pzn
class Meta:
verbose_name_plural = 'Jobs'
verbose_name = 'Job'
所以我要確保「遷移」文件夾中的「爬蟲」 app子目錄是空的,數據庫是空的,然後調用:
python manage.py makemigrations
..什麼導致了下面的輸出:
No changes detected
所以我想迫使Django的運行創造應用「履帶式」的初始遷移:
python manage.py makemigrations crawler --empty
...什麼輸出:
Migrations for 'crawler':
crawler/migrations/0001_initial.py:
然而,當我想看到的內容遷移文件/crawler/migrations/0001_initial.py,我得到一個空遷移文件:
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2016-12-15 13:25
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
]
operations = [
]
什麼建議,那Django不希望因爲某些原因,建立相應的表在莫模型dels.py.
事實上,當我打電話......
python manage.py migrate
...我得到以下輸出:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, crawler, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying crawler.0001_initial... OK
而對於我的模型的表不存在於數據庫中。
你知道嗎,我該如何強迫Django創建表格? 使用的Django版本是1.10.4
在此先感謝您的幫助。
您的'crawler'應用程序是否在'INSTALLED_APPS'列表中? – Chris
除@chris指出的外,使用命令'python manage.py migrate'將遷移更改應用到db。 –
@VikashSingh:OP是不是已經這樣做了? – AKS