标签: django-south

Django-reversion和南兼容性

django-reversion是否适用于南迁?
django-reversion和南方兼容吗?

当前版本:
- 回归 - 1.2.1
- 南 - 0.7.1

django compatibility django-models django-south django-reversion

10
推荐指数
1
解决办法
1964
查看次数

使用Django South从具体继承转移到抽象继承

我有一个现有的Django项目,它有几个使用基类的具体继承的模型.在仔细考虑之后,在阅读了像雅各布·卡普兰 - 莫斯这样的人对此有所说明后,在我的案例中使用这种具体的继承是不必要的.我想迁移到使用抽象基类.

使这个变得复杂的是我的网站是实时的,我有用户输入的数据.因此,在整个转换过程中,我需要保持所有数据的完整性.

我举一个更具体的例子:

之前:

APP1/models.py:

class Model1(base_app.models.BaseModel):
    field1 = models.CharField(max_length=1000)
    field2 = models.CharField(max_length=1000)
Run Code Online (Sandbox Code Playgroud)

APP 2/models.py:

class Model2(base_app.models.BaseModel):
    field1 = models.CharField(max_length=1000)
    field2 = models.CharField(max_length=1000)
Run Code Online (Sandbox Code Playgroud)

base_app/models.py:

class BaseModel(models.Model):
    user = models.ForeignKey(User)
    another_field = models.CharField(max_length=1000)
Run Code Online (Sandbox Code Playgroud)

后:

APP1/models.py:

class Model1(base_app.models.BaseModel):
    field1 = models.CharField(max_length=1000)
    field2 = models.CharField(max_length=1000)
Run Code Online (Sandbox Code Playgroud)

APP 2/models.py:

class Model2(base_app.models.BaseModel):
    field1 = models.CharField(max_length=1000)
    field2 = models.CharField(max_length=1000)
Run Code Online (Sandbox Code Playgroud)

base_app/models.py:

class BaseModel(models.Model):
    user = models.ForeignKey(User)
    another_field = models.CharField(max_length=1000)

    class Meta:
        abstract = True
Run Code Online (Sandbox Code Playgroud)

现在,我的计划是首先添加abstract = True到BaseModel.然后,对于每个使用的模型BaseModel,一次一个:

  • 使用south迁移数据库并使用--auto标志创建此迁移
  • 使用南数据迁移.例如,我将循环遍历Model1中的每个对象,以获取具有相同pk的BaseModel中的对象,并将BaseModel对象的每个字段的值复制到Model1对象.

首先,这会有用吗?第二,有更好的方法吗? …

python migration django django-south

10
推荐指数
1
解决办法
1928
查看次数

将Django模型迁移到unique_together约束

我有一个有三个领域的模型

class MyModel(models.Model):
    a    = models.ForeignKey(A)
    b    = models.ForeignKey(B)
    c    = models.ForeignKey(C)
Run Code Online (Sandbox Code Playgroud)

我想强制这些字段之间的唯一约束,并找到django的unique_together,这似乎是解决方案.但是,我已经有了一个现有的数据库,并且有很多重复数据库.我知道,因为unique_together在数据库级别工作,我需要使用unique-ify行,然后尝试迁移.

有没有一个很好的方法来删除重复项(副本具有相同的(A,B,C)),以便我可以运行迁移来获取unique_togethercontstraint?

migration django unique-constraint django-south

10
推荐指数
1
解决办法
2817
查看次数

django南迁,没有设置默认值

我用南方来迁移我的django模型.然而,南方有一个令人讨厌的虫子.它没有在Postgres数据库中设置默认值.例:

created_at = models.DateTimeField(default = datetime.now)
tag_id = models.PositiveIntegerField(default = 0)
Run Code Online (Sandbox Code Playgroud)

South会将这两个字段添加到数据库中,但无法设置其默认值,这需要手动完成.

这个bug有没有补丁?

更新 我已经尝试过设置默认日期auto_now_add=True,但这也没有设置默认值.添加null=True字段会添加db.alter_column由南方生成的迁移脚本.但是这只会删除NOT NULL约束,不添加默认值.整数字段相同

python django django-south

10
推荐指数
2
解决办法
8245
查看次数

如何修复关于Django 1.5中的localflavor的Django South问题?

我正在开始一个新项目,我正在使用Django 1.5.我发现localflavor的东西已经从Django 1.5中删除了,现在是一个单独的可安装包.所以我安装了它.在我的models.py中,我正在导入US localflavors来获取我的状态:

from django_localflavor_us.models import USStateField
Run Code Online (Sandbox Code Playgroud)

在我的模型中,我有这个领域:

state = USStateField(default='VA')
Run Code Online (Sandbox Code Playgroud)

当我尝试使用South运行迁移时,我现在收到以下消息:

!无法冻结字段'playerstats.location.state'!(此字段包含类django_localflavor_us.models.USStateField)

!南方不能反省某些领域; 这可能是因为他们是定制的!领域.如果他们在0.6或以下工作,这是因为我们已经删除了!模型解析器(它经常破坏东西).!要解决此问题,请阅读http://south.aeracode.org/wiki/MyFieldsDontWork

我阅读了维基文章,但我发现它非常冗长和复杂.我的USStateField现在不被认为是1.5中的自定义字段了吗?还有其他人在1.5中遇到过这个问题吗?你是怎么解决的?

django django-south django-localflavor

10
推荐指数
2
解决办法
819
查看次数

Django数据库挂起了迁移

编辑:我解决了这个问题.问题是我打开了一个与该模型建立数据库连接的shell.我退出了外壳,一切都在继续.

我刚刚用南迁移了我的数据库,但是我没有迁移一个应用程序,而是意外地迁移了整个项目(./manage.py migrate).一切都很顺利,直到它到达需要迁移的应用程序.我没有得到错误,但它挂在那一点:

~/django/baeren $ ./manage.py migrate
Running migrations for home:
- Nothing to migrate.
 - Loading initial data for home.
Installed 0 object(s) from 0 fixture(s)
Running migrations for price:
- Nothing to migrate.
 - Loading initial data for price.
Installed 0 object(s) from 0 fixture(s)
Running migrations for gallery:
- Nothing to migrate.
 - Loading initial data for gallery.
Installed 0 object(s) from 0 fixture(s)
Running migrations for menu:
 - Migrating forwards to 0006_auto__add_field_menu_category.
 > menu:0006_auto__add_field_menu_category …
Run Code Online (Sandbox Code Playgroud)

django django-south

10
推荐指数
1
解决办法
1857
查看次数

维持Django分叉的南迁移

我正在研究一个非常复杂的Django项目(50多个模型),它有一些复杂的逻辑(许多不同的工作流程,视图,信号,API,后台任务等).我们称之为project-base.目前正在使用Django 1.6 + South迁移和其他一些第三方应用程序.

现在,其中一个要求是创建一个这个项目的分支,它将在这里和那里添加一些字段/模型以及一些额外的逻辑.我们称之为project-fork.大多数额外的工作将在现有模型之上,但也会有一些新的.

随着project-base未来的发展,我们希望这些功能也能进入project-fork(就像git-land中的rebase/merge).额外的更改project-fork将不会合并回来project-base.

有什么可能是实现这一目标的最佳方式?以下是我的一些想法:

  1. 使用南合并在project-fork保持它最新的与最新变化project-base,为解释在这里.使用信号和任何其他必要手段来保持新逻辑project-fork尽可能松散耦合,以避免任何潜在的冲突.

  2. 不要修改任何原始project-base模型,而是在引用旧模型的不同应用程序中创建新模型(即使用OneToOneField).额外的逻辑可能会在旧的和/或新的应用程序中结束.

  3. 你的想法请:)

我会选择选项1,因为它看起来整体上并不复杂,但可能会带来更大的风险.以下是我将如何看待它:

迁移project-base:

  • 0001_project_base_one
  • 0002_project_base_two
  • 0003_project_base_three

迁移project-fork:

  • 0001_project_base_one
  • 0002_project_fork_one

合并后,迁移将如下所示:

  • 0001_project_base_one
  • 0002_project_base_two
  • 0002_project_fork_one
  • 0003_project_base_three
  • 0004_project_fork_merge_noop (添加到两个项目的更改中合并)

使用这种方法有任何陷阱吗?有没有更好的办法?

感谢您的时间.

django merge rebase django-models django-south

10
推荐指数
1
解决办法
157
查看次数

ManyToManyField和South迁移

我有M2M字段的用户配置文件模型

class Account(models.Model):
    ...
    friends = models.ManyToManyField('self', symmetrical=True, blank=True)
    ...
Run Code Online (Sandbox Code Playgroud)

现在我需要知道HOW和WHEN如何作为朋友互相添加我为此创建了一个模型

class Account(models.Model):
    ...
    friends = models.ManyToManyField('self', symmetrical=False, blank=True, through="Relationship")
    ...


class Relationship(models.Model):    
    """ Friends """        
    from_account = models.ForeignKey(Account, related_name="relationship_set_from_account")            
    to_account = models.ForeignKey(Account, related_name="relationship_set_to_account")
    # ... some special fields for friends relationship

    class Meta:                    
        db_table = "accounts_account_friends"            
        unique_together = ('from_account','to_account')
Run Code Online (Sandbox Code Playgroud)

我是否应该为此更改创建任何迁移?如果您有任何建议,请随时写下这里.

谢谢

PS:accounts_account表已包含记录

django django-models django-south

9
推荐指数
1
解决办法
2756
查看次数

如何让South在PythonAnywhere上工作?

关于这个问题在PA论坛上发表我正面临让南方工作PA的问题,但这些日子看起来很有帮助的人很忙,所以我在这里.

  1. 据我所知,宾夕法尼亚州的Django与南方航行.

  2. 在PA上的bash控制台上的python shell中,import south不会返回任何错误.

  3. 我已经包含'south',INSTALLED_APPSsettings.py文件的部分中.

  4. python manage.py syncdb在执行任何南方命令之前已经运行,并且syncdb运行但是我无法辨别该输出与非Southed的任何差异syncdb.这是输出:

    创建表格......

    安装自定义SQL ...

    安装索引......

    找不到固定装置.

  5. 试图运行任何南方命令返回Unknown Command: 'south_command'.这适用于以下所有:

    python manage.py convert_to_south app_name

    python manage.py schemamigration app_name --initial

    python manage.py schemamigration app_name --auto

如果它有帮助,我已经使用PA教程中建议的手动配置方法设置了我的Web应用程序,而不是Django项目.

我真的被困在第0步,任何帮助都会受到赞赏,在此先感谢!

django django-models django-south pythonanywhere

9
推荐指数
1
解决办法
572
查看次数

Django 1.7 vs Django1.6 vs Django 1.5

我一直在使用Django 1.5进行开发.是否值得花时间从Django 1.5转换到Django 1.6或Django 1.7?我知道,在1.7中,迁移是Django的核心.与南方有何不同?

django django-south django-1.5 django-1.6

9
推荐指数
1
解决办法
5190
查看次数