标签: django-migrations

Django 1.8循环依赖性错误

我无法在线找到这个问题的解决方案.我所拥有的只是"To manually resolve a CircularDependencyError, break out one of the ForeignKeys in the circular dependency loop into a separate migration, and move the dependency on the other app with it. If you’re unsure, see how makemigrations deals with the problem when asked to create brand new migrations from your models. In a future release of Django, squashmigrations will be updated to attempt to resolve these errors itself."来自:docs.我对django迁移有点新意,我喜欢更容易理解和易于理解的答案.

我收到此错误:

raise CircularDependencyError(", ".join("%s.%s" % n for n in …
Run Code Online (Sandbox Code Playgroud)

python django django-migrations

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

模型字段上的随机生成无限迁移

这是models.py中的一个类:

class Shop(models.Model):
    ...
    code = models.CharField(max_length=4, default=generate_random_code())
Run Code Online (Sandbox Code Playgroud)

可以想象,generate_random_code()总是返回一个不同的字符串.

问题是,Django迁移引擎丢失了,因为每次我做一个python manage.py makemigrations,我得到一个新的修改Alter field tablet_code on shop.我想这是因为函数被执行了,但它不应该,所以Django认为我修改了代码.

你怎么解决这个问题?谢谢.

python django django-migrations

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

Django迁移最佳实践

我正在使用Django 1.7进行迁移,我不确定什么是最佳实践,我应该将迁移文件添加到我的存储库,或者这是一个坏主意?

python django version-control django-migrations

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

如何使用模型创建新表

所以我有这个django安装,其中有一堆迁移脚本.他们看起来像这样:

00001_initial.py
00002_blah_blah.py
00003_bleh_bleh.py
Run Code Online (Sandbox Code Playgroud)

现在我知道这些是"数据库构建"脚本,它将获取定义的内容models.py并对db运行它们以"创建"表和内容.

我想创建一个新表(所以我在models.py中创建了它的定义).为此,我复制了另一个模型类并编辑了它的名称和字段,一切都很好.让我们称这个新的模型类'繁荣'.

我现在的问题是如何使用迁移脚本和繁荣模型"创建"此繁荣表?

我担心我可能会意外地破坏已经存在于DB中的任何内容.如何运行迁移以仅创建热表?如何专门为其创建迁移脚本?

我知道它与某些事情有关manage.py并且正在运行migraterunmigration(或者是它sqlmigrate?...我很困惑).在创建繁荣表时,如果你知道我的意思,我不希望数据库出现繁荣

python django django-migrations

0
推荐指数
2
解决办法
9357
查看次数

从github部署更改的模型时,如何在heroku上运行makemigrations / migrate?

我已经将应用程序从github存储库部署到我的客户作为协作者的heroku帐户中,但这一次我不得不添加一些新模型。

但是我意识到,当我从github部署我的更改时,heroku不会运行makemigrations并进行迁移。

II阅读了关于stackoverflow的一些答案,并理解这是应该的。

但是我的问题是我该怎么办?将变更模型部署到heroku应用程序的最佳实践是什么。(由于客户那里已经有数据,因此我认为它不会再次删除并重新创建我的应用程序。)

(我能够运行makemigrations并从bash手动迁移,但是当我进行30多次部署时,这很痛苦)

django heroku django-models django-migrations

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

app中的迁移网址没有迁移类

当我尝试运行迁移时,我得到了 "Migration urls in app *** has no Migration class"吗?我刚刚添加了新应用.

不知道要看什么方向.追溯:

C:\Users\PAPA\DEV\liberty\lib\site-packages\django\db\models\__init__.py:55:
RemovedInDjango19Warning: The utilities in django.db.models.loading are deprecated 
in favor of the new application loading system.
from . import loading

Traceback (most recent call last):   File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
File "...\django\core\management\__init__.py", line 338, in execute_from_command_line
    utility.execute()
File "...\django\core\management\__init__.py", line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
File "...\django\core\management\base.py", line 390, in run_from_argv
    self.execute(*args, **cmd_options)
File "...\django\core\management\base.py", line 441, in execute
    output = self.handle(*args, **options)
File "...\django\core\management\commands\makemigrations.py", line 63, …
Run Code Online (Sandbox Code Playgroud)

django django-migrations

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

Django 重命名字段并创建同名的新字段会返回 psycopg2 错误:DuplicateTable:关系已存在

我有两个 Django(外键)字段 - FieldA 和 FieldB - 引用同一个类,但是不同的对象。然后我想将 FieldB 重命名为 FieldC。我在一次迁移中重命名了它(自动检测)。

然后我意识到我实际上需要一个与旧 FieldB 同名的新字段(也是同一类的外键)。因此,我创建了第二个迁移来添加新字段:FieldB。由于我刚刚重命名了另一个,我认为这不会给数据库带来任何问题。

我在本地使用 SQLite DB 进行开发,效果很好。当我将其推送到我们的 Postgres 数据库时,这返回了一个错误。

模型类

class ModelClass(Model):
    field_a: ForeignClassA = models.ForeignKey(ForeignClassA, on_delete=models.SET_NULL, blank=True, null=True, related_name='FieldA')
    # this one should be renamed to field_c after which I create another field with the same name and properties.
    field_b: ForeignClassA = models.ForeignKey(ForeignClassA, on_delete=models.SET_NULL, blank=True, null=True, related_name='FieldB')
Run Code Online (Sandbox Code Playgroud)

迁移一:重命名

operations = [
        migrations.RenameField(
            model_name='modelname',
            old_name='FieldB',
            new_name='FieldC',
        ),]
Run Code Online (Sandbox Code Playgroud)

迁移二:添加字段

operations = [
        migrations.AddField(
            model_name='modelname',
            name='FieldB',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='FieldB', to='app.othermodel'), …
Run Code Online (Sandbox Code Playgroud)

python django postgresql django-migrations

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

在尝试创建Django迁移时,ForeignKey缺少必需的位置参数on_delete

我正在尝试使用python/django和postgres创建表.我为每个数据库表创建了类models.py.当我尝试创建迁移时,它会给我这个错误:

File "..\database\models.py", line 40, in <module>
    class group(models.Model):
File "database\models.py", line 41, in group
    user_id = models.ForeignKey(user) TypeError: __init__() missing 1 required positional argument: 'on_delete'
Run Code Online (Sandbox Code Playgroud)

这是我的代码

class user(models.Model):
    STATUS_CHOICES = (
        ('active','Active'),
        ('not active', 'Not active')
    )
    user_id= models.AutoField(primary_key=True)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    email = models.EmailField(max_length=70, null=True, blank=True, unique=True)
    phone = models.CharField( max_length=17, blank=True)
    gender = models.CharField(max_length=50)
    region = models.CharField(max_length=50)
    password = models.CharField(widget=models.PasswordInput)
    active = models.CharField(max_length=50, choices=STATUS_CHOICES, default='not active')
    register_date = models.DateField(default=date.today)

    def _str_(self):
        return …
Run Code Online (Sandbox Code Playgroud)

python database django postgresql django-migrations

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