2016-12-15 9 views
1

私はかなりの問題を抱えていますが、django-admin.pyはアプリケーションディレクトリのモデル用のテーブルを作成しません。 PostgreSQLデータベースとユーザを作成し、このユーザにデータベースのすべての特権を与え、次にこのデータベースをsettings.pyに含めました。 settings.pyの関連セクションは、以下のようになります。manage.py dbshel​​lがうまく機能として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

ありがとうございます。

+0

あなたの 'crawler'アプリケーションは' INSTALLED_APPS'のリストにありますか? – Chris

+0

@chrisが指摘したことの上に、dbに移行の変更を適用するには、 'python manage.py migrate'コマンドを使用します。 –

+0

@VikashSingh:OPはすでにそれをしていませんか? – AKS

答えて

3

データの移行とスキーマの移行が混在しています。 --emptyフラグは、データ移行では空の移行ファイルを作成するために使用されるため、カスタム移行コマンドを入力してデータ移行を行うことができます。

あなたの場合、データはありません。あなたが新たに作成されたアプリでマイグレーションを実行し、非常に最初の時間は、あなたが明示的にアプリの名前を言及する必要があること 注:だから、正しいコマンドは

更新

python manage.py migrate 

続く

python manage.py makemigrations crawler 

です。 ./manage.py makemigrationsだけではうまくいきません。。最初にアプリ名なしで実行したときに起こったことは何ですか。

+0

OPが言ったように: 'python manage.py makemigrations'は' No changes detected 'につながりますか? – AKS

+1

@AKS、OPsコマンドは 'python manage.py makemigrations --empty'でした – e4c5

+0

そうですか?上からもう一度確認してください;-) – AKS

関連する問題