gpt4 book ai didi

python - 南迁移不更新 psql 表 (django)

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:17 24 4
gpt4 key购买 nike

摘要:我正在遵循南方教程。我更改了 models.py 文件,但是当我运行“migrate”时,它不会更新 psql 表。我不知道为什么不。

我编辑了 polls/models.py我添加了一个类(class)“调查”我在“问题”中添加了一行来引用调查

模型.py

我添加了调查

我在类问题中添加了这一行:

调查 = models.ForeignKey(调查)

其余的都已经存在(基本上按照 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 polls --auto您不能在没有迁移的应用程序上使用 --auto。尝试--初始。(app01)MoriartyMacBookAir13:getstartapp macuser$ sudo python manage.py schemamigration polls --initial

    • 添加了模型民意调查。调查
    • 添加了模型民意调查。问题
    • 添加了模型投票。选择创建 0001_initial.py。您现在可以通过以下方式应用此迁移:./manage.py migrate polls

我仔细检查了 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,我按照建议运行迁移命令...但是,psql 表没有更新。有什么建议吗?以下是命令的完整响应:
  • ```
    (app01)MoriartyMacBookAir13:getstartapp macuser$ sudo python manage.py 迁移民意调查 运行民意调查迁移: - 没有什么可迁移的。 - 加载民意调查的初始数据。 从 0 个固定装置安装了 0 个物体 (app01)MoriartyMacBookAir13:getstartapp macuser$ sudo python manage.pysyncdb 正在同步... 创建表... 正在安装自定义 SQL ... 正在安装索引... 已从 0 个固定装置安装 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$

    ```

    也就是说,psql 表中仍然不存在 polls_survey,但是syncdb 和 migrate 没有效果...因此 psql 没有反射(reflect) python 描述的数据模型...

    有什么建议我在这里做错了什么吗?

    如果有用:settings.py 文件中有我的heroku psql 登录详细信息,因此我能够成功运行上面的heroku pg:psql 命令

    最佳答案

    我认为您必须在更改模型和添加模型之前运行schemamigration --initial。运行 schemamigration --initial 后,更改模型并添加新模型。然后运行 ​​schemamigration --auto ,然后运行 ​​migrate 命令。它应该相应地更改您的数据库。

    步骤

    • 运行 python manage.py schemamigration polls --initial(更改模型之前)
    • 更改 models.py
    • 运行 python manage.py schemamigration polls --auto
    • 运行 python manage.py migrate polls

    关于python - 南迁移不更新 psql 表 (django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622003/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com