标签: django-migrations

django 1.8 迁移内容类型完整性错误

我将我的项目从 django 1.6 升级到 1.8。迁移时,我收到 contenttype 错误:

django.db.utils.IntegrityError: null value in column "name" violates not-null constraint
Run Code Online (Sandbox Code Playgroud)

详细信息:失败的行包含(31、null、django_auth、adgroup)。

我尝试迁移 contenttype 0002 但它告诉我:

django.db.utils.ProgrammingError: relation "django_content_type" already exists
Run Code Online (Sandbox Code Playgroud)

我如何克服第一个迁移文件?

django django-migrations

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

单元测试以检查未生成的迁移

有没有人编写过单元测试来验证他们的 Django 应用程序中是否存在未生成的迁移?我认为它可能看起来像:

  1. 称呼 python manage.py makemigrations
  2. 将结果刮到可解析的对象中
  3. 核实 "no migrations were found"
  4. 如果找到迁移,则列出它们,测试失败,并删除生成的文件

如果没有,我将编写一个,以便我们的构建失败。

python django unit-testing django-migrations

1
推荐指数
2
解决办法
763
查看次数

为什么修改 AUTH_USER_MODEL 似乎需要子类 AbstractUser?

创建项目、应用程序并将该应用程序添加到我的 后INSTALLED_APPS,我尝试通过AbstractUser在我的 中进行子类化来创建自定义用户类models.py

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    pass
Run Code Online (Sandbox Code Playgroud)

然后我尝试运行makemigrations并收到此错误:

SystemCheckError: System check identified some issues:

ERRORS:
auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'CustomUser.groups'.
    HINT: Add or change a related_name argument to the definition for 'User.groups' or 'CustomUser.groups'.
auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'CustomUser.user_permissions'.
    HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'CustomUser.user_permissions'.
main.CustomUser.groups: (fields.E304) …
Run Code Online (Sandbox Code Playgroud)

django django-custom-user django-migrations

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

在新字段中添加了错误的默认值,现在无法迁移

我在我的一个模型中添加了一个用户外部字段并进行了迁移。系统提示我添加默认值。user 的默认值假设为 Int,表示 user_id。我没有添加 Int,而是添加了字符串“username”。

现在我被困住了:

return int(value)
ValueError: invalid literal for int() with base 10: 'testuser'
Run Code Online (Sandbox Code Playgroud)

我删除了与模型关联的所有对象,并尝试迁移,但这不起作用,出现相同的错误。( Model.objects.all().delete())

我恢复到以前的迁移,这并没有解决问题,当我迁移时,它得到了相同的 ValueError。( ./manage.py migrate app 0037_auto_20170330_0326)

最后,我删除了新的外国字段,但这也没有解决问题。

在这种情况下我还有什么其他选择?

我的模型非常简单:

class Chat(models.Model):
    user = models.ForeignKey(User) #new field that was added
    message = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

django django-models django-migrations

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

什么命令可以让我重新创建 django_admin_log 表?

我删除了那个表(哎呀),现在我想重新生成它。有没有允许我这样做的命令?在网上查看,每个人都说要使用 command ./manage.py syncdb,但该命令在最新版本的 Django 中不再可用。所以我尝试了./manage.py migrate,但这并没有生成表格。我也试过./manage.py --run-syncdb,但这也没有做到。

我很确定我可以手动完成,但我希望有一种方法可以使用内置命令来做到这一点。

django django-migrations

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

无法从“app.model”导入名称“model”

我有两个应用程序“用户”和“游戏”,这是我的 user/models.py:

from django.db import models
from django.db.models.fields import related
from django.contrib.auth.models import AbstractBaseUser , User, 
 AbstractUser , PermissionsMixin
from .managers import CustomUserManager
from game.models import Game


class User(AbstractBaseUser,PermissionsMixin):
    username = models.CharField(max_length=150, 
                unique=True, blank=True , null=True,)
    email = models.EmailField( blank=True , null=True , unique=True)
    password = models.CharField(max_length=100, null=True , blank=True)


    objects = CustomUserManager()

    class Meta:
            db_table = 'user'


class Team(models.Model):
    name = models.CharField(max_length=40, unique=True)
    players = models.ManyToManyField(User, 
           related_name="players")
    game = models.ManyToManyField(Game)
    is_verfied = models.BooleanField(default=False)

    class Meta:
        db_table = 'team'
Run Code Online (Sandbox Code Playgroud)

这是我的游戏/models.py: …

django django-models django-migrations

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

如何将数据库中某些表的所有权从 postgres 更改为另一个用户?

我有一个包含大量表的数据库。一些表归 postgres 用户所有,而不是我创建的。我想将此类表的所有权转移到我创建的表中,因为在执行 django-migrations 时,您只能为 psql 连接设置一个用户和密码,而该用户无权访问 postgres 用户拥有的表,因此迁移未完成。

到目前为止,谷歌搜索没有帮助,因为他们建议使用ALTERREASSIGN OWNED 更改数据库或表的所有权。但问题是这些不能更改某些表的所有权,因为它们必须由postgres. 我可以通过逐个选择每个表来手动更改所有权,但是在尝试完全执行时,我收到一条错误消息

"ERROR: cannot reassign ownership of objects owned by role postgres because they are required by the database system".

手动更改一百多个表不是一种选择。有没有人对此问题有任何解决方法?

sql django postgresql psql django-migrations

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

Django 迁移的命名约定

Django 迁移是否有最佳实践命名约定?

如果这是一次小型迁移,那么名称就非常明显,但是当多个字段发生更改时,事情就会变得混乱。只是想知道是否有人有他们喜欢使用的标准。

python django django-models django-migrations

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

Django中的重复模型字段

重复的模型字段给我带来麻烦(当我运行我的网页时没有这样的表appname_modelname).每当我执行./manage.py迁移appname时,它会给我"重复字段".我检查了我的models.py,其中只有一个.如何删除该重复字段?似乎无论我做什么,它都会停留.我试过了:

  • 删除数据库

  • 删除app文件夹中的迁移文件夹

  • 执行./manage.py sqlclear south,然后在dbshel​​l中删除south_migrationhistory表

  • ./manage.py schemamigration appname --initial,./ manage.py migrate appname --fake

我已经没想完了.

class Document(models.Model):
    filename = models.CharField(max_length=255, blank=True, null=True, default=None)
    identity = models.CharField(max_length=255, default=None, null=True)
    user = models.ForeignKey(User, null=False)
    user_id = models.IntegerField(User, null=True)
    docfile = models.FileField(upload_to=_upload_path, storage=fs) # upload_to is a path inside the storage path

    def get_upload_path(self,filename):
        return str(self.user.id) + '/' + str(date.today()) + '/' + filename
Run Code Online (Sandbox Code Playgroud)

python django django-migrations

0
推荐指数
1
解决办法
1710
查看次数

MPTT模型创建在数据迁移中失败

我已经编写了一个数据迁移文件,用于为MPTT模型创建一些初始数据。

但是创作失败了

def create_foo(apps, schema_editor):
    db_alias = schema_editor.connection.alias
    logger = logging.getLogger(__name__)

    Foo = apps.get_model("app", "Foo")

    for attr in ROLES:
        try:
            foo = Foo.objects.using(db_alias).get(name=attr[0])
    except Foo.DoesNotExist:
        parent = Foo.objects.using(db_alias).get(name=attr[1]) if attr[1] else None
        if parent:
            foo = Foo.objects.create(name=attr[0], parent=parent)
        else:
            foo = Foo.objects.using(db_alias).create(name=attr[0])
        logger.info("Created foo - %s" % foo)
Run Code Online (Sandbox Code Playgroud)

我在执行以下代码时遇到错误,有什么想法吗?

foo = Foo.objects.using(db_alias).create(name=attr[0])

文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQLdb/connections.py”,行36,在defaultErrorhandler中引发错误类,错误值django.db.utils.IntegrityError:( 1048,“列'lft'不能为空”

django-mptt django-migrations

0
推荐指数
1
解决办法
324
查看次数