Неожиданное поведение при вызове метода serializer.create приводит к потере данных в несвязанных данных (Django Rest Framework)
Django>=4.2.7,<4.3.0
djangorestframework>=3.14.0,<3.15.0
python-dateutil>=2.8.2,<2.9.0
psycopg2-binary>=2.9.9,<3.0.0
django-crontab>=0.7.1,<0.8.0
Я пишу тест для метода serializer.create. Я подготовил некоторые данные, чтобы передать их в метод create
def create(self, validated_data):
"""
Passing in the restructured validated_data to the
CostumUserCreate method.
"""
user_data = validated_data.get('user_data')
profile_data = validated_data.get('profile_data')
new_user = User.objects.create(
user_data=user_data,
profile_data=profile_data
)
return new_user
мой тест:
def test_serializer_create(self):
"""
Tests the correct restructuring of the validated data within
the CustomUserSerializer create method.
"""
data = {}
user_data = {
'email': 'updated.email@GMAIL.com', # Not normalized
'password': 'blabla123'
}
profile_data = {
'first_name': 'Jay',
'last_name': 'Miller',
'position': self.position1
}
data['user_data'] = user_data
data['profile_data'] = profile_data
serializer = serializers.CustomUserSerializer()
user = serializer.create(data)
print(f'USER DATA: {user_data}')
print(f'PROFILE DATA: {profile_data}')
Когда я пытаюсь вывести в консоль данные пользователя и данные профиля, они выводятся как пустой словарь в случае данных пользователя, но не для данных профиля
USER DATA: {}
PROFILE DATA: {'first_name': 'Jay', 'last_name': 'Miller', 'position': <Position: Human Resource Specialist>}
но как только я закомментирую метод serializer.create, пользовательские данные снова появятся в терминале
USER DATA: {'email': 'updated.email@GMAIL.com', 'password': 'blabla123'}
PROFILE DATA: {'first_name': 'Jay', 'last_name': 'Miller', 'position': <Position: Human Resource Specialist>}
Я понятия не имею, как это вообще может происходить, поскольку метод serializer.create или, соответственно, любой другой метод не должен оказывать никакого влияния на переменные, к которым обращаются до передачи в них... или я что-то не так понял? Я буквально не представляю, как это исправить, я пробовал гуглить, общаться в чате, но так и не понял, что здесь происходит.