标签: django-migrations

Django 1.7中的迁移

我目前正在参与一个项目,我正在使用Django 1.7开发版本.我想使用"makemigrations"和"migrate"将我在模型中所做的更改(添加字段,删除模型等)添加到数据库模式中"commmands.I为我的应用程序中的一个模型添加了一个"age"字段.

country = models.CharField(max_length=50, blank=True)
address = models.CharField(max_length=100, blank=True)
postal_code = models.IntegerField(max_length=50, blank=True)
city = models.CharField(max_length=50, blank=True)
phone_no = models.CharField(max_length=25, blank=True)
skype_name = models.CharField('Skype Username',max_length=50, blank=True)
age=models.IntegerField(max_length=25,blank=True)
Run Code Online (Sandbox Code Playgroud)

当我使用"makemigrations"命令时,输出就像---"没有检测到更改".我猜"makemigrations"无法弄清楚对架构所做的更改.任何建议我怎样才能使它工作?

django django-migrations

3
推荐指数
1
解决办法
5055
查看次数

我如何为 django 1.8 编写初始数据

我想要像Users and Options.

对于旧的 django 来说,fixtures 是非常简单的方法,但现在 django 说要以我不完全理解的迁移方式来做。

现在我的迁移文件夹中已经有 10 个迁移。我很困惑我在哪里保存我的初始数据迁移文件。

如果我喜欢0011_initial_data并把它放在其他迁移中,那么它会在长长的迁移列表中丢失,并且新用户不容易注意到那是什么。而且如果有人压制迁移,那么没有人会知道那里是否有一些数据。

我想将它放在某个名为 data migration 的文件夹中。我怎样才能做到这一点

这是他们网站上的示例代码。但是我应该把它放在哪里以免混淆

# -*- coding: utf-8 -*-
from django.db import models, migrations

def combine_names(apps, schema_editor):
    # We can't import the Person model directly as it may be a newer
    # version than this migration expects. We use the historical version.
    Person = apps.get_model("yourappname", "Person")
    for person in Person.objects.all():
        person.name = "%s %s" % (person.first_name, person.last_name)
        person.save()

class Migration(migrations.Migration):

    dependencies = …
Run Code Online (Sandbox Code Playgroud)

python django django-migrations

3
推荐指数
1
解决办法
1646
查看次数

squashmigrations 用法(如何找到“migration_name”)

我正在使用 Django 1.8。

运行时python manage.py squashmigrations myapp我得到这个:

manage.py squashmigrations: error: the following arguments are required: migration_name
Run Code Online (Sandbox Code Playgroud)

我如何找到migration_name

django postgresql django-migrations

3
推荐指数
2
解决办法
4704
查看次数

在 Django 中创建模型之前,如何在 postgresql 中安装扩展?

使用 django 1.8 + Postgres 9+,我有带有自定义 PG 数据类型(如 ltree)的模型。从零创建数据库失败,因为

CREATE EXTENSION ltree;
Run Code Online (Sandbox Code Playgroud)

不被执行。我尝试进行空迁移,但在模型创建运行。是否存在在模型创建之前运行 sql 的方法?

django ltree postgresql-9.3 django-migrations

3
推荐指数
1
解决办法
2977
查看次数

非空唯一字段的默认值应该是什么

我正在向现有模型添加一个字段:

...
booking_id = models.CharField(null=False, unique=True, max_length=5)
...
Run Code Online (Sandbox Code Playgroud)

现在,当我运行时./manage makemigrations,要求一个默认值。该值是在pre_save信号中创建的。在这种情况下,我应该给出什么作为默认值?

显然,如果我给出一个默认值,当我运行./manage migrate这会引发django.db.utils.IntegrityError

django django-models django-migrations

3
推荐指数
1
解决办法
1535
查看次数

Django ModelField在添加新字段时,根据同一模型中的其他字段添加默认值

我有这个领域,

job_created = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

现在我想添加这样的东西,如何基于post_created本身的默认值.我希望第一个last_modified是在创建作业时,我想要类似的东西

last_modified = models.DateTimeField(auto_now=True, default = post_created)
Run Code Online (Sandbox Code Playgroud)

或者,如果我在运行迁移时提供一个默认值,该怎么做?

django django-models django-migrations

3
推荐指数
1
解决办法
1252
查看次数

如何删除Django迁移文件?

我进行了迁移,并意识到自己犯了一个错误(通过添加默认值),然后进行了新的迁移,该迁移允许使用null

我不希望我的同事运行第一次迁移,该迁移将默认值添加到成千上万的记录。如何在不中断当前迁移的情况下删除该迁移(通常,如果仅删除迁移,则会出现很多错误,很难修复)。

我假设您可以使用命令?我以为就是这样〜>

例如 django manage.py deletemigration <migration_id>

django django-migrations

3
推荐指数
1
解决办法
1221
查看次数

docker python:3 中缺少环境变量,使用 docker-compose

虽然我的配置看起来不错,但我的python:3图像似乎没有预期的DJANGO_SECRET_KEY设置,至少在Dockerfile尝试运行迁移时

$ docker-compose config
services:
  api:
    build:
      context: /Users/ben/Projects/falcon/falcon-backend
      dockerfile: Dockerfile
    depends_on:
    - db
    - redis
    environment:
      DJANGO_SECRET_KEY: 'some-secret-that-works-elsewhere'
$
$ docker-compose up --build api
[...]
 Step 6/7 : RUN echo `$DJANGO_SECRET_KEY`
 ---> Running in fbfb569c0191

[...]
django.core.exceptions.ImproperlyConfigured: Set the DJANGO_SECRET_KEY env variable
ERROR: Service 'api' failed to build: The command '/bin/sh -c python manage.py migrate' returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)

然而,最后一行CMD python manage.py runserver 0.0.0.0:8001 --settings=falcon.settings.dev-microservice确实按需要启动, 并设置了必要的环境变量。

# Dockerfile -- api …
Run Code Online (Sandbox Code Playgroud)

python django docker django-migrations docker-compose

3
推荐指数
1
解决办法
1058
查看次数

如何将 django-mptt 重建添加到迁移中?

我已将 django-mptt 添加到现有数据库,并创建新的迁移。

迁移过程中要求提供的默认值levelleftright和这样的领域,但不将添加model.rebuild操作迁移文件。

如何手动将重建操作添加到迁移文件?

django-mptt django-migrations

3
推荐指数
1
解决办法
624
查看次数

将迁移更改写入 django 简单历史记录

django-simple-history书写历史改变instance.save()方法。但是当我写迁移更改实例数据时,更改没有出现。

save()的方法

Model = apps.get_model('myapp', 'MyModel') 
Run Code Online (Sandbox Code Playgroud)

MyModel 
Run Code Online (Sandbox Code Playgroud)

一样吗?有没有办法将这种变化写入历史?

django django-migrations django-simple-history

3
推荐指数
1
解决办法
636
查看次数