2014-10-29 172 views
1

摘要: 我正在遵循南教程。 我更改了一個models.py文件,但是當我運行「migrate」時,它不更新psql表。我不知道爲什麼不。南遷移不更新psql表(django)

我編輯投票/ models.py 我加了班,「調查」 我的「問題」是指調查

models.py

我加入了類添加了一行Survey

,我加入這一行的類問題:

survey = models.ForeignKey(Survey)

其餘所有已經存在(基本上按照Django的教程)

import datetime 
from django.db import models 
from django.utils import timezone 

# Create your models here. 

### Adding the Survey class just now, to practice using South 
class Survey(models.Model): 
    survey_name = models.CharField(max_length=190) 
    pub_date = models.DateTimeField('date published') 
    def __unicode__(self): #__str__ instead of __unicode__ if using Python 3, but unicode for python 2 
    return self.survey_name 
    def was_published_recently(self): 
    return self.pub_date >= timezone.now() - datetime.timedelta(days=1) 
    was_published_recently.admin_order_field = 'pub_date' 
    was_published_recently.boolean = True 
    was_published_recently.short_description = 'Published recently?' # for admin site 


class Question(models.Model): 
    survey = models.ForeignKey(Survey) ### this is a new line based on adding the Survey class above 
    question_text = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 
    def __unicode__(self): #__str__ instead of __unicode__ if using Python 3, but unicode for python 2 
    return self.question_text 
    def was_published_recently(self): 
    return self.pub_date >= timezone.now() - datetime.timedelta(days=1) 
    was_published_recently.admin_order_field = 'pub_date' 
    was_published_recently.boolean = True 
    was_published_recently.short_description = 'Published recently?' # for admin site 


class Choice(models.Model): 
    question = models.ForeignKey(Question) 
    choice_text = models.CharField(max_length=200) 
    votes = models.IntegerField(default=0) 
    def __unicode__(self): 
    return self.choice_text 

終端

  1. 我做schemamigration表示,它加入模型polls.Survey

    (app01)MoriartyMacBookAir13:getstartapp MACUSER $ vim polls/models.py (app01)MoriartyMacBookAir13:getstartapp macuser $ python manage.py schemamigration民意調查--auto 您不能在沒有遷移的應用上使用--auto秒。嘗試 - 初始。 (app01)MoriartyMacBookAir13:getstartapp MACUSER $ sudo的蟒蛇manage.py schemamigration投票--initial

    • 新增模型polls.Survey
    • 新增模型polls.Question
    • 新增模型polls.Choice 創建0001_initial。 PY。現在,您可以將此遷移有:./manage.py遷移投票

我雙重檢查的調查並沒有在PSQL表中存在尚未:

(app01)MoriartyMacBookAir13:getstartapp macuser$ heroku pg:psql 
---> Connecting to HEROKU_POSTGRESQL_YELLOW_URL (DATABASE_URL) 
psql (9.3.5, server 9.3.3) 
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) 
Type "help" for help. 

app01::YELLOW=> \d 
          List of relations 
Schema |     Name     | Type |  Owner  
--------+--------------------------------------+----------+---------------- 
public | account_emailaddress     | table | aqolirupsmmmqz 
public | account_emailaddress_id_seq   | sequence | aqolirupsmmmqz 
public | account_emailconfirmation   | table | aqolirupsmmmqz 
public | account_emailconfirmation_id_seq  | sequence | aqolirupsmmmqz 
public | auth_group       | table | aqolirupsmmmqz 
public | auth_group_id_seq     | sequence | aqolirupsmmmqz 
public | auth_group_permissions    | table | aqolirupsmmmqz 
public | auth_group_permissions_id_seq  | sequence | aqolirupsmmmqz 
public | auth_permission      | table | aqolirupsmmmqz 
public | auth_permission_id_seq    | sequence | aqolirupsmmmqz 
public | auth_user       | table | aqolirupsmmmqz 
public | auth_user_groups      | table | aqolirupsmmmqz 
public | auth_user_groups_id_seq    | sequence | aqolirupsmmmqz 
public | auth_user_id_seq      | sequence | aqolirupsmmmqz 
public | auth_user_user_permissions   | table | aqolirupsmmmqz 
public | auth_user_user_permissions_id_seq | sequence | aqolirupsmmmqz 
public | discover_author      | table | aqolirupsmmmqz 
public | discover_author_id_seq    | sequence | aqolirupsmmmqz 
public | discover_awedio      | table | aqolirupsmmmqz 
public | discover_awedio_id_seq    | sequence | aqolirupsmmmqz 
public | discover_user      | table | aqolirupsmmmqz 
public | discover_user_id_seq     | sequence | aqolirupsmmmqz 
public | django_admin_log      | table | aqolirupsmmmqz 
public | django_admin_log_id_seq    | sequence | aqolirupsmmmqz 
public | django_content_type     | table | aqolirupsmmmqz 
public | django_content_type_id_seq   | sequence | aqolirupsmmmqz 
public | django_session      | table | aqolirupsmmmqz 
public | django_site       | table | aqolirupsmmmqz 
public | django_site_id_seq     | sequence | aqolirupsmmmqz 
public | hello_greeting      | table | aqolirupsmmmqz 
public | hello_greeting_id_seq    | sequence | aqolirupsmmmqz 
public | polls_choice       | table | aqolirupsmmmqz 
public | polls_choice_id_seq     | sequence | aqolirupsmmmqz 
public | polls_question      | table | aqolirupsmmmqz 
public | polls_question_id_seq    | sequence | aqolirupsmmmqz 
[other tables, but no more polls tables] 
public | south_migrationhistory    | table | aqolirupsmmmqz 
public | south_migrationhistory_id_seq  | sequence | aqolirupsmmmqz 
(45 rows) 

app01::YELLOW=> \q 
  • 現在爲了更新並創建polls_survey,我建議運行migrate命令...但是,psql表不會更新。任何建議爲什麼?下面是命令的充分反應:
  • ```
    (app01)MoriartyMacBookAir13:getstartapp MACUSER $ sudo的蟒蛇manage.py遷移民調 用於投票運行的遷移: - 沒有遷移。 - 加載民意調查的初始數據。 從0固定裝置(S) (app01)MoriartyMacBookAir13安裝0對象(S):getstartapp MACUSER $ sudo的蟒蛇manage.py執行syncdb 同步... 創建表... 安裝自定義的SQL ... 安裝索引。 .. 從0夾具(一個或多個)

    Synced: 
    > django.contrib.admin 
    > django.contrib.auth 
    > django.contrib.contenttypes 
    > django.contrib.sessions 
    > django.contrib.messages 
    > django.contrib.staticfiles 
    > storages 
    > evernote 
    > discover 
    > hello 
    > south 
    > django.contrib.sites 
    > djrill 
    > allauth.socialaccount.providers.linkedin 
    
    Not synced (use migrations): 
    - polls 
    - allauth 
    - allauth.account 
    - allauth.socialaccount 
    - allauth.socialaccount.providers.facebook 
    (use ./manage.py migrate to migrate these) 
    (app01)MoriartyMacBookAir13:getstartapp macuser$ sudo python manage.py migrate polls 
    Running migrations for polls: 
    - Nothing to migrate. 
    - Loading initial data for polls. 
    Installed 0 object(s) from 0 fixture(s) 
    (app01)MoriartyMacBookAir13:getstartapp macuser$ 
    
    (app01)MoriartyMacBookAir13:getstartapp macuser$ sudo python manage.py convert_to_south polls 
    This application is already managed by South. 
    (app01)MoriartyMacBookAir13:getstartapp macuser$ sudo python manage.py migrate polls 
    Running migrations for polls: 
    - Nothing to migrate. 
    - Loading initial data for polls. 
    Installed 0 object(s) from 0 fixture(s) 
    (app01)MoriartyMacBookAir13:getstartapp macuser$ sudo python manage.py schemamigration polls --auto 
    Nothing seems to have changed. 
    (app01)MoriartyMacBookAir13:getstartapp macuser$ 
    

    ```

    即,polls_survey仍然沒有在PSQL表中存在已安裝的0(多個)對象的,但執行syncdb並遷移都爲無影響...所以psql不反映蟒蛇描述的數據模型...

    任何建議我在做什麼錯在這裏?

    萬一有用:settings.py文件有我的Heroku psql的登錄信息在裏面,所以我爲什麼能夠成功運行的Heroku PG:psql的命令上面

    回答

    1

    我認爲你必須運行schemamigration - 在改變模型和添加模型之前,初始化。運行模式遷移 - 初始化後,更改模型並添加新模型。然後運行schemamigration --auto,然後遷移命令。它應該相應地更改您的數據庫。

    步驟

    • 運行python manage.py schemamigration投票--initial(改變模型之前)
    • 更改models.py
    • 運行python manage.py schemamigration投票--auto
    • 運行python manage.py migrate民意調查