from django.db import transaction from .models import Card, UserAbility, UserCard, UserPet @transaction.atomic def initialize_math_identity(user, identity): UserPet.objects.get_or_create(user=user) for dimension, _ in UserAbility.Dimension.choices: UserAbility.objects.get_or_create(user=user, dimension=dimension) card, _ = Card.objects.get_or_create( slug=f"mathbti-{identity.code}", defaults={ "name": f"{identity.mathematician}人物卡", "mathematician": identity.mathematician, "description": identity.description, "image": identity.portrait, }, ) UserCard.objects.get_or_create( user=user, card=card, defaults={"source": "mathbti"}, )