Проблема в том, что значение по умолчанию вычисляется немедленно , и для миграций он не может на самом деле сериализовать это.
Как сказал Bing, это не очень полезно делать в любом случае. Вы можете просто передать первичный ключ как значение по умолчанию. Это указано в документации по параметру default=…
[Django -doc] :
Для таких полей, как ForeignKey
, которые отображаются на экземпляры модели значения по умолчанию должны быть значением поля, на которое они ссылаются (pk
, если не установлен to_field
) вместо экземпляров модели.
Таким образом, мы можем записать это как :
class Employee(models.Model):
full_name = models.CharField(max_length=100)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
slack_permission = models.OneToOneField(
SlackPermission,
on_delete=models.CASCADE,
related_name='Slack',
<b>default=1</b>
)
github_permission = models.OneToOneField(
GithubPermission,
on_delete=models.CASCADE,
related_name='Github',
<b>default=1</b>
)
Обратите внимание, что вы должны убедиться, что существует объект с этим первичным ключом. Поэтому это может быть не идеальным.