Как создать поле "один к одному" с помощью Django для существующей таблицы?

У нас уже есть модель, допустим, Product. И мы хотим расширить ее до "отношений один к одному", допустим, ProductDetails. Как сделать это так, чтобы для каждого существующего ряда Product автоматически создавался модельный ряд ProductDetails? С некоторыми параметрами по умолчанию.

Предоставляет ли Django такой инструмент? Задача кажется мне довольно обычной, но я не могу найти никакого нативного решения.

здесь есть ответ на ваш вопрос: https://stackoverflow.com/a/63323183/10602634

Сигналы django могут быть использованы для создания, обновления или удаления при изменении объекта.

в вашем случае:

from django.dispatch.dispatcher import receiver

class ProductDetails(models.Model):
    product =  models.OneToOneField(Product, on_delete= models.CASCADE)
    '''rest'''

обернуть функцию с помощью приемника

@receiver(post_save, sender=Product)
def add_details(sender, instance, created, **kwargs):
    if created:
        ProductDetails.objects.create(product=instance)
        return ProductDetails

документация по ресиверу от компании django охватывает тему https://docs.djangoproject.com/en/3.2/topics/signals/#receiver-functions

Вернуться на верх