Нет , instance
не None
, первичный ключ (instance.id
) равен None
.
Это имеет смысл , перед созданием объекта на стороне базы данных элемент имеет no первичный ключ, поскольку база данных отправляет первичный ключ.
Таким образом, если вы хотите работать с первичным ключом, вам необходимо работать с элементом post_save
, более того, вероятно, что id
- это int, поэтому он все равно не будет работать, поскольку ' '.join()
не может объединять целые числа.
Вы можете использовать триггер post_save
, и сохраните его еще раз, но это приведет к созданию двух запросов при создании нового Employee
:
@receiver(post_save, sender=Employee)
def post_save_employee_receiver(sender, instance, created, *args, **kwargs):
if <b>created</b>:
instance.slug = slugify(f'{instance.name} {instance.surname} {instance.pk}')
instance<b>.save()</b>
Кроме того, сигналы обычно немного антипаттерны , особенно если вы например, выполните .bulk_create()
, .update()
, и т. д. c. сигналы не срабатывают.