Лучший подход к присвоению существующих данных новому пользователю django

Я новичок в Django и хотел бы узнать, какой правильный подход к следующей проблеме:

У меня есть таблица компаний, которая является m2m с таблицей пользователей. Поскольку они могут быть созданы пользователями.
Поэтому я хочу сделать следующее: каждый раз, когда создается пользователь, я беру компанию "по умолчанию" с определенным идентификатором и копирую ее этому новому пользователю.
. Таким образом, пользователь сможет вносить изменения, которые он хочет, в эту компанию, не затрагивая оригинальную компанию, которая копируется.

Это должно работать:

def create_default_company_for_user(user: User):
    create_kwargs = {}  # Whatever values you want for the new company fields
    default_company = Company.objects.create(**create_kwargs)
    user.company_set.add(default_company)

Вызовите его там, где вы создаете пользователей. Лучшим способом, вероятно, будет использовать его в качестве приемника сигнала post_save от Django:

@receiver(post_save, sender=User)
def create_default_company_for_user(
    sender, user: User, created: bool, **kwargs
):
    if created:
        create_kwargs = {}  # Whatever values you want for the new company fields
        default_company = Company.objects.create(**create_kwargs)
        user.company_set.add(default_company)

Примечание: я не использовал "компанию по умолчанию для копирования", вам нужны значения полей по умолчанию, которые вы можете использовать для создания новых компаний (в данном случае это переменная create_kwargs, которая должна быть константой, определенной как словарь где-то в вашем коде)

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