每次在Django中都会创建多个迁移

ujv3wf0j  于 2023-04-13  发布在  Go
关注(0)|答案(1)|浏览(115)

我的app里有一个模型:

class PutAwayProductsPosition(models.Model):
    products = models.ForeignKey(Product, on_delete=models.CASCADE)
    put_position = models.CharField(max_length=50, default=0)
    is_put = models.BooleanField(default=False)

class PutAway(models.Model):
    warehouse = models.ForeignKey(Warehouse, on_delete=models.CASCADE)
    grn = models.ForeignKey("grn.GRN", on_delete=models.CASCADE)
    employee_assigned = models.ForeignKey(Employee, on_delete=models.CASCADE)
    putaway_id = models.IntegerField(default=0)
    products_position = models.ManyToManyField(PutAwayProductsPosition)
    completely_executed = models.BooleanField(default=False)
    partially_executed = models.BooleanField(default=False)
    created = models.DateTimeField(auto_now_add=True)
    scheduled_datetime = models.DateTimeField(auto_now_add=True)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)

每次运行makemigrations时,都会在迁移中创建一个文件,如下所示

class Migration(migrations.Migration):

    dependencies = [
        ('grn', '0068_auto_20230411_0703'),
        ('putpick', '0033_auto_20230410_0810'),
    ]

    operations = [
        migrations.AlterField(
            model_name='putaway',
            name='grn',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='grn.GRN'),
        ),
    ]

即使在模型中没有变化,我也会迁移它们,然后,如果我再次运行makemigrations,则会在文件夹中创建此文件,我无法理解其中的原因。
我试图伪造移民,但得到了这个:

(venv) rahulsharma@Rahuls-MacBook-Air Trakkia-Backend % python manage.py migrate --fake putpick 0034_auto_20230411_0703   
Operations to perform:
  Target specific migration: 0034_auto_20230411_0703, from putpick
Running migrations:
  No migrations to apply.
  Your models have changes that are not yet reflected in a migration, and so won't be applied.
  Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
(venv) rahulsharma@Rahuls-MacBook-Air Trakkia-Backend % python manage.py makemigrations                                
Migrations for 'grn':
  grn/migrations/0069_auto_20230411_0828.py
    - Alter field grn on grntempscans
Migrations for 'putpick':
  putpick/migrations/0035_auto_20230411_0828.py
    - Alter field grn on putaway
(venv) rahulsharma@Rahuls-MacBook-Air Trakkia-Backend % python manage.py migrate                                       
Operations to perform:
  Apply all migrations: all apps name
Running migrations:
  Applying grn.0069_auto_20230411_0828... OK
  Applying putpick.0035_auto_20230411_0828... OK

现在当我再次运行makemigartions时,这两个被创建。

avwztpqn

avwztpqn1#

我看到您尝试进行的迁移有多个依赖项。多个依赖项可能是生成所面临错误的原因之一,在这种情况下,您可以尝试进行多个不同的迁移,每个迁移只有一个依赖项,然后运行python manage.py makemigrations
甚至我最近也遇到了一个错误,它说我试图迁移的表已经存在,但我无法找到它,所以我试图假装迁移它,然后它确实迁移了。
请让我知道这是否有帮助,或者我们可以尝试寻找其他出路。

相关问题