Django position:添加PositionField破坏迁移



我已经有了Vehicle和Car的表,使用这个django-positions来定位表中的项。为此,我在两个模型中都添加了位置字段。

class Vehicle(models.Model):
    name = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50, unique=True)
    position = PositionField()

class Car(models.Model):
    name = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50, unique=True)
    vehicle = models.ForeignKey(Vehicle, related_name="vehicle")
    position = PositionField()

makemigrations运行良好,但migrate得到以下错误。使用postgreSQL

django.db.utils.IntegrityError: check constraint "myapp_vehicle_position_check" is violated by some row

在迁移过程中,SQL代码检查PositionField的值是否大于或等于0。默认值为-1,用于自动排序迁移失败。

我没有挖掘更多,但作为一个转变,将默认值更改为等于或大于零的值,允许迁移成功。

class Vehicle(models.Model):
    name = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50, unique=True)
    position = PositionField(default=99)

最新更新