标签: django-migrations

重新运行Django数据迁移

如何在Django 1.8+上重新运行数据迁移?如果相关,我的迁移编号为0011_my_data_migration.py,是最新的迁移.

django django-migrations

33
推荐指数
2
解决办法
2万
查看次数

django如何知道哪些迁移已经运行?

django如何知道迁移是否已经应用?它通常是正确的,但如果它没有,我不知道从哪里开始故障排除.

python django database-migration django-migrations

31
推荐指数
4
解决办法
7181
查看次数

ValueError:相关模型u'app.model'无法解析

我有两个应用程序(ook并且eek说),我想ook从模型中使用外键到模型eek.两者都是在INSTALLED_APPSook第一位.

ook.models.py,我有:

class Fubar(models.Model):
    ...
Run Code Online (Sandbox Code Playgroud)

eek.models.py,我有:

class monkey(models.Model):
    external = models.ForeignKey('ook.Fubar', blank=True, null=True)
    ...
Run Code Online (Sandbox Code Playgroud)

生成的迁移是:

class Migration(migrations.Migration):

    dependencies = [
        ('eek', '0002_auto_20151029_1040'),
    ]

    operations = [
        migrations.AlterField(
            model_name='monkey',
            name='external',
            field=models.ForeignKey(blank=True, to='ook.Fubar', null=True),
        ),
    ]
Run Code Online (Sandbox Code Playgroud)

当我运行迁移时,我收到此错误:

   ...
   1595             raise ValueError('Foreign Object from and to fields must be
the same non-zero length')
   1596         if isinstance(self.rel.to, six.string_types):
-> 1597             raise ValueError('Related model %r cannot be resolved' % …
Run Code Online (Sandbox Code Playgroud)

django django-models django-migrations

31
推荐指数
4
解决办法
2万
查看次数

如何在Django 1.7中重置迁移

(我知道有一个与此相同的标题,但问题不同).

我设法使我的开发机器迁移和生产迁移不同步.

我有一个使用South的Django应用程序.我有自己的工作流程,工作正常(这可能不是正确的做事方式,但我没有遇到任何问题).

基本上我有一个脚本将生产数据库转储复制到我的开发机器.它还复制了迁移文件.这样两者是同步的,我可以照常运行南方命令.

现在我已升级到1.7,并开始使用迁移.当我使用以前的工作流程(复制数据库转储和生产中的迁移文件)时,它不会检测我的开发计算机上的更改.

我已经阅读了迁移文档,我发现使用它的正确方法是

  1. 在我的开发机器上运行"make migrations"和"migrate".
  2. 在我的devlopemnt机器上运行"migrate"以实际更改数据库
  3. 复制更改,包括迁移文件.
  4. 在生产机器上运行"迁移".(没有"makemigrations"步骤)

无论如何.现在一切都搞得一团糟.我想"重置"我的迁移并从头开始,从现在开始做正确的事情.

我需要做什么?

  1. 删除迁移表的内容(在两台机器上)?
  2. 删除迁移文件夹的内容?(包括init .py文件).
  3. 根据新文档开始迁移.

我错过了什么吗?是否有理由为什么从生产(数据库和迁移文件)复制所有内容后,我的开发机器上都没有检测到任何更改

migration django django-south django-migrations

30
推荐指数
5
解决办法
4万
查看次数

检查待处理的Django迁移

在Django中,是否有一种简单的方法可以检查是否已运行所有数据库迁移?我发现manage.py migrate --list,它给了我想要的信息,但格式不是机器可读的.

对于上下文:我有一个脚本,在迁移数据库之前不应该开始运行.由于各种原因,从正在运行迁移的进程发送信号会很棘手.所以我想让我的脚本定期检查数据库以查看是否所有迁移都已运行.

python django django-migrations

30
推荐指数
6
解决办法
3万
查看次数

Django - 无法使用动态upload_to值为ImageField创建迁移

我刚刚将我的应用程序升级到1.7(实际上还在尝试).

这就是我在models.py中所拥有的:

def path_and_rename(path):
    def wrapper(instance, filename):
        ext = filename.split('.')[-1]
        # set filename as random string
        filename = '{}.{}'.format(uuid4().hex, ext)
        # return the whole path to the file
        return os.path.join(path, filename)
    return wrapper

class UserProfile(AbstractUser):
    #...
    avatar = models.ImageField(upload_to=path_and_rename("avatars/"),
                               null=True, blank=True,
                               default="avatars/none/default.png",
                               height_field="image_height",
                               width_field="image_width")
Run Code Online (Sandbox Code Playgroud)

当我尝试时makemigrations,它抛出:

ValueError: Could not find function wrapper in webapp.models.
Please note that due to Python 2 limitations, you cannot serialize unbound method functions (e.g. a method declared
and used in the same class body). …
Run Code Online (Sandbox Code Playgroud)

python django django-migrations

27
推荐指数
1
解决办法
6050
查看次数

如何压制最近的Django迁移?

在Django的迁移代码中,有一个squashmigrations命令:" 如果可能的话,将迁移压缩到更少的迁移,app_label包括migration_name更少的迁移."

所以,如果你想压缩前五次迁移,这将有所帮助.

从一个特定的壁球开始压制的最佳方法是migration_name什么?

在我目前正在开展的项目中,我们添加了5-10个新的迁移文件,因为我们添加了新功能.我们将立即部署整个项目,看起来单独运行这些将花费太长时间.我想将此项目的所有迁移压缩为单个迁移并测试运行时间.

django django-migrations

27
推荐指数
4
解决办法
2万
查看次数

如何使用新的Django迁移向模型添加新字段?

我正在使用该contribute_to_class方法,但我不知道如何使用新的迁移在数据库中创建字段.

django django-models django-1.7 django-migrations

26
推荐指数
3
解决办法
4万
查看次数

为什么django 1.7会为字段选择中的更改创建迁移?

我在1.7版本上观察到了这种行为,但在以前的版本中没有使用南迁移.

例如.

class RedemptionCode(models.Model):
    EXPIRE_OPTIONS = (
        ('1 week', '1 Week'),
    )

    expire_option = models.CharField(max_length=255, choices=EXPIRE_OPTIONS)
Run Code Online (Sandbox Code Playgroud)

当我添加更多选项时:

EXPIRE_OPTIONS = (
    ('1 week', '1 Week'),
    ('2 weeks', '2 Weeks'),
    ('1 month', '1 Month'),
    ('1 day', '1 Day'),
)
Run Code Online (Sandbox Code Playgroud)

并运行makemigrations,它为它创建一个迁移,来自south后台我认为应该说没有检测到任何变化,因为它不会影响数据库模式.我不知道它的用途是什么:

class Migration(migrations.Migration):

    dependencies = [
        ('credits', '0001_initial'),
    ]

    operations = [
        migrations.AlterField(
            model_name='redemptioncode',
            name='expire_option',
            field=models.CharField(max_length=255, choices=[('1 week', '1 Week'), ('2 weeks', '2 Weeks'), ('1 month', '1 Month'), ('1 day', '1 Day')]),
        ),
    ]
Run Code Online (Sandbox Code Playgroud)

migration django django-migrations

26
推荐指数
1
解决办法
3850
查看次数

"没有安装带有标签'admin'的应用程序"运行Django迁移.该应用程序已正确安装

我试图在Django 1.7上的数据迁移期间使用admin.LogEntry对象

'django.contrib.admin'应用程序已列出INSTALLED_APPS.

在shell上,它的工作原理是:

>>> from django.apps import apps
>>> apps.get_model('admin', 'LogEntry')
django.contrib.admin.models.LogEntry
Run Code Online (Sandbox Code Playgroud)

但在迁移过程中,它失败了:

def do_it(apps, schema_editor):
    LogEntry = apps.get_model('admin', 'LogEntry')
Run Code Online (Sandbox Code Playgroud)

失败如下:

django-admin migrate
(...)
LookupError: No installed app with label 'admin'.
Run Code Online (Sandbox Code Playgroud)

使用调试器,我得到了'admin'没有安装:

ipdb> apps.get_apps()
[]
ipdb> apps.all_models.keys()
['website', 'google', 'allauth', 'twitter', 'busca', 'conteudo', 'django_mobile', 'django_filters', 'videocenter', 'tinymce', 'oferta', 'programacaotv', 'contenttypes', 'suit', 'haystack', 'destaque', 'filer', 'galeria', 'auth', 'facebook', 'paintstore', 'critica', 'disqus', 'fichas', 'omeletop', 'autocomplete_light', 'modelsv1', 'temas', 'django_extensions', 'adv_cache_tag', 'taggit', 'social', 'personalidade']
Run Code Online (Sandbox Code Playgroud)

为什么??

python django django-admin django-migrations

25
推荐指数
3
解决办法
3万
查看次数