Данные '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
Новые офисные форматы (docx, xlsx, и т.д.) являются zip-файлами, которые содержат набор XML-файлов. С этим в памяти у Вас есть несколько подходов.
Можно использовать Открыть XML SDK, расположенный по http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&displaylang=en
Можно разархивировать docx файл, сделать поиск и замену для маркеров и zip, которой это создает резервную копию.
Существует веб-сайт по openxmldeveloper.org, который является только для такого рода вещи. Кроме того, примите во внимание, что они уже поставляют бета-версию 2 SDK.
Способом использовать xml я нашел это решение, которое находит ВСЕ sdt-узлы
NameTable nt = new NameTable();
XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
nsManager.AddNamespace("w", wordmlNamespace);
XmlDocument xDoc = new XmlDocument();
xDoc.Load(doc.MainDocumentPart.GetStream());
XmlNodeList nodeList = xDoc.SelectNodes(@"./w:document/w:body//w:sdt", nsManager);
Это работает, но не делает Открыть XML Format SDK 2.0, дают мне шанс для этого?
Eric White затронул точно этот предмет в статье блога, подробно излагающей программу, предназначенную для проверки исходных отрывков, встроенных в файлы DocX. Вне просто, что статья я настоятельно рекомендую, чтение его ряда на Office Открывает XML и C#.
Я использовал этот:
IEnumerable test2 = from element in body.Elements () где element.InnerText.Contains (" sdt ") select element;