Django-如何在覆盖用户或组模型的同时在应用程序中进行本地迁移?

Django-如何在覆盖用户或组模型的同时在应用程序中进行本地迁移?,django,django-admin,Django,Django Admin,我有一个应用程序“注册”,我试图在Django auth组中添加一个额外字段。我已经使用猴子补丁成功地实现了它。但是,当我将此应用程序发布给其他人并且他们运行“迁移”时,构建失败,并说明新添加的字段不存在的原因。原因是当我创建迁移时,迁移文件不是在我的“注册”应用程序中创建的,而是在Django.contrib.auth应用程序中创建的 如何克服这个问题?我通过在应用程序中添加一个虚拟迁移文件——“注册”解决了这个问题。在这次迁移中,我通过执行SQL查询手动创建了列,这样构建就不会失败。我会把代

我有一个应用程序“注册”,我试图在Django auth组中添加一个额外字段。我已经使用猴子补丁成功地实现了它。但是,当我将此应用程序发布给其他人并且他们运行“迁移”时,构建失败,并说明新添加的字段不存在的原因。原因是当我创建迁移时,迁移文件不是在我的“注册”应用程序中创建的,而是在Django.contrib.auth应用程序中创建的


如何克服这个问题?

我通过在应用程序中添加一个虚拟迁移文件——“注册”解决了这个问题。在这次迁移中,我通过执行SQL查询手动创建了列,这样构建就不会失败。我会把代码贴在这里

def check_and_add_column(apps, schema_editor):
  import sqlite3
  conn = sqlite3.connect('db7.sqlite3')
  cur = conn.cursor()
  result = [True for i in cur.execute('PRAGMA table_info(auth_group)') if i[1] == 'is_auto_assign']

  if not result:
      cur.execute('ALTER TABLE auth_group ADD COLUMN is_auto_assign BOOLEAN DEFAULT FALSE')

class Migration(migrations.Migration):
  dependencies = [
    ('auth', '0001_initial'),
  ]

  operations = [
      migrations.RunPython(check_and_add_column,),

      # If you need to run SQL directly from here
      # migrations.RunSQL("ALTER TABLE auth_group ADD COLUMN is_auto_assign BOOLEAN DEFAULT FALSE"),
  ]

我通过在我的应用程序中添加一个虚拟迁移文件——“注册”解决了这个问题。在这次迁移中,我通过执行SQL查询手动创建了列,这样构建就不会失败。我会把代码贴在这里

def check_and_add_column(apps, schema_editor):
  import sqlite3
  conn = sqlite3.connect('db7.sqlite3')
  cur = conn.cursor()
  result = [True for i in cur.execute('PRAGMA table_info(auth_group)') if i[1] == 'is_auto_assign']

  if not result:
      cur.execute('ALTER TABLE auth_group ADD COLUMN is_auto_assign BOOLEAN DEFAULT FALSE')

class Migration(migrations.Migration):
  dependencies = [
    ('auth', '0001_initial'),
  ]

  operations = [
      migrations.RunPython(check_and_add_column,),

      # If you need to run SQL directly from here
      # migrations.RunSQL("ALTER TABLE auth_group ADD COLUMN is_auto_assign BOOLEAN DEFAULT FALSE"),
  ]

难道“其他人”不需要先运行
makemigrations
吗?或者您要同时复制模型和数据库?其他人不应该首先运行“makemigrations”。这就是要求。每当我们安装第三方注册软件包时,他们也会要求我们只是“迁移”,而不是同时运行这两个命令。这就是我的需求的来源:(除此之外,Travis CI build也未能说明该字段不存在。)(难道“其他人”不需要先运行
makemigrations
吗?或者您正在一起复制模型和数据库?其他人不应该先运行“makemigrations”。这是要求。每当我们安装第三方注册软件包时,他们也会要求我们只运行“migration”,而不运行这两个命令。这就是我的要求nt来源:(除此之外,Travis CI build也未能说明该字段不存在。)(难道“其他人”不需要先运行
makemigrations
吗?或者您正在一起复制模型和数据库?其他人不应该先运行“makemigrations”。这是要求。每当我们安装第三方注册软件包时,他们也会要求我们只运行“migration”,而不运行这两个命令。这就是我的要求nt来源:(除此之外,Travis CI build也未能说明该字段不存在。)(