模型中基于尚未加载的数据的Django默认值

时间:2019-07-16 15:55:52

标签: django django-models django-migrations

在为Django创建迁移时,我遇到了一个实例,在该实例中,我需要基于另一个表为自定义用户设置默认值。

# models.py
def get_default_item():
    return Item.objects.filter(name='XXXX').first().id

class CustomUser(AbstractUser):
    # ...
    item = models.ForeignKey(Item, on_delete=models.CASCADE, default=get_default_item)
    # ...

我遇到了两个问题:

  • 我需要确保已创建Item表。我想我可以使用依赖项来做到这一点。
  • 我需要确保在引用项目“ XXXX”之前已创建该项目。不幸的是,直到我将数据迁移过来,这才可能发生,因为Item ID必须与旧系统保持一致,并且(不幸的是)我不能将id 0与Django / MySQL组合使用,因为这具有特殊含义。

是否有一种方法可以告诉迁移“现在不必担心此默认设置,您稍后会得到它”?

0 个答案:

没有答案