Лучший подход к присвоению существующих данных новому пользователю 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
, которая должна быть константой, определенной как словарь где-то в вашем коде)