Эта функция index
использует вложенные функции match
для учета нескольких возможных столбцов и поиска нужной строки. Однако будьте осторожны, если ваша таблица имеет повторяющиеся значения в записях (например, скажем, ячейки B2 и D4 совпадают), тогда это не будет работать точно.
=INDEX(Sheet2!$A$1:$E$7,IFERROR(MATCH(Sheet1!B2,Sheet2!$B$1:$B$7,0),IFERROR(MATCH(Sheet1!B2,Sheet2!$C$1:$C$7,0),IFERROR(MATCH(Sheet1!B2,Sheet2!$D$1:$D$7,0),IFERROR(MATCH(Sheet1!B2,Sheet2!$E$1:$E$7,0),"not found")))),MATCH("Account Names",Sheet2!$A$1:$E$1,0))
Обратите внимание, что если первое вложенное match
функции сбой (имя отсутствует в таблице), тогда внутренний результат «не найден» ... вы не увидите этого, потому что он становится аргументом для функции index
, которая, очевидно, не повторяется, и поэтому вы просто получите ошибку #VALUE!
. Поэтому было бы неплохо обернуть функцию iferror
вокруг всего.
Данные 'reputation'
вложены в dict под клавишей 'profile'
. Вам нужно вставить этот дикт и передать его в профиль:
def create(self, validated_data):
profile_data = validated_data.pop('profile')
password = validated_data.get('password')
user = User.objects.create(**validated_data)
user.set_password(password)
user.save()
Profile.objects.create(user=user, **profile_data)
return user