ForeignKeyフィールドにデフォルトが必要なことがあります。例:デフォルトの機能をシリアル化することができないので、機能のデフォルトは大きな問題を引き起こし、そこで時間がデシベルの移行に来るまで機能的なdjangoモデルフィールドのデフォルトを処理する最善の方法は何ですか?
class ReleaseManager(BaseManager):
def default(self):
return self.filter(default=True).order_by('-modified').first()
class Release(BaseModel):
default = models.BooleanField(default=False)
...
class Server(models.Model):
...
release = models.ForeignKey(Release, null=True, default=Release.objects.default)
すべてがうまくと上記のコードで良いです。手動での移行はこれを回避することができますが、マイグレーションがおそらくsquashedである大規模なプロジェクトでは、これは定期的にこれが不注意な時間の爆弾を残します。
一般的な回避策は、フィールドのデフォルトをモデルの保存メソッドに移動することですが、モデルがrest frameworkなどで使用されている場合や、フィールドでデフォルトが予想されるフォームを作成する場合に混乱が生じます。