私はかなりの問題を抱えていますが、django-admin.pyはアプリケーションディレクトリのモデル用のテーブルを作成しません。 PostgreSQLデータベースとユーザを作成し、このユーザにデータベースのすべての特権を与え、次にこのデータベースをsettings.pyに含めました。 settings.pyの関連セクションは、以下のようになります。manage.py dbshellがうまく機能としてDjangoはマイグレーションにモデルを含めることを望んでいません - PostgreSQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'crawler',
'USER': 'austinpowers',
'PASSWORD': '****',
'HOST': 'localhost',
'PORT': ''
}
}
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'
だから私は「クローラー」アプリのサブディレクトリに必ず「移行」フォルダを作るには、データベースは空です空で、次に呼び出し:
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はMOにモデルに対応するテーブルを作成するために、何らかの理由で望んでいないことを示唆している何を、 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が指摘したことの上に、dbに移行の変更を適用するには、 'python manage.py migrate'コマンドを使用します。 –
@VikashSingh:OPはすでにそれをしていませんか? – AKS