【问题标题】:django south how to add a new modeldjango south 如何添加新模型
【发布时间】:2015-03-01 07:00:10
【问题描述】:

我是第一次使用 Django South。我已经成功地使用 Django South 更新了我的数据库,而没有删除我的整个数据库。 这是查询django south migration error relation “photo_photo” already exists

但每当我想添加新模型时,我都会遇到错误。提到我已在我的 admin.py 文件中添加了所有员工

上面给出的查询是关于现有模型的变化,幸运的是我已经成功更新了我的数据库。

但是在遵循South Tutorial 的相同命令后,我无法在我的数据库中添加新模型,显然该模型显示在 django 管理站点中,但是在我单击该模型之后或在我想要之后将任何内容保存到该模型上,我面临以下错误

DatabaseError at /admin/photo/userreferralcode/
relation "photo_userreferralcode" does not exist
LINE 1: SELECT COUNT(*) FROM "photo_userreferralcode"

我的模型.py

class UserReferralCode(models.Model):
    owner = models.CharField(max_length=300,blank=True,null=True)
    referral_code = models.CharField(max_length=300,blank=True,null=True)
    created_time = models.DateTimeField(auto_now_add=True)
    updated_time = models.DateTimeField(auto_now=True)

我的管理员.py

from app.models import UserReferralCode 

admin.site.register(UserReferralCode)

我还在我的主要urls.py 中添加了admin.autodiscover()

提到新的迁移(因为我打算添加一个新模型)我已经逐步编写了以下命令

第一

python manage.py schemamigration photo --initial

然后是第二个

python manage.py migrate photo

然后是第三个

python manage.py schemamigration photo --auto

然后是第四个

python manage.py migrate photo

然后

python manage.py syncdb

在完成所有这些工作后,模型UserReferralCode 已添加到 django 管理站点中,我可以看到它,但是单击这个新添加的模型或在此模型上保存任何内容后,我面临上述给出的错误,我又给这里了。

 DatabaseError at /admin/photo/userreferralcode/
 relation "photo_userreferralcode" does not exist
 LINE 1: SELECT COUNT(*) FROM "photo_userreferralcode" 

提到我的应用名称是照片

现在是什么问题或我在这里缺少什么。

【问题讨论】:

    标签: python django django-models django-south


    【解决方案1】:

    --initial 在首次迁移创建应用程序时使用。之后,每次更改模型或添加新模型时都会使用 --auto。 (对于另一个 django 应用程序,您在第一次迁移时运行 --initial,依此类推)

    因此,考虑到您之前的问题,您应该应用以下步骤:

    1. PhotoUserCommission 添加到您的models.py
    2. python manage.py schemamigration photo --initial
    3. python manage.py migrate photo
    4. (进行更改并为其创建迁移)
    5. UserReferralCode 添加到models.py
    6. python manage.py schemamigration photo --auto
    7. python manage.py migrate photo

    顺便说一句,一旦你习惯了migrate,你就不必使用syncdb,因为migrate旨在以更方便的方式替换syncdb

    【讨论】:

      猜你喜欢
      • 2012-03-08
      • 2012-05-19
      • 2014-05-16
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 2012-02-09
      相关资源
      最近更新 更多