@epolyak

Custom сериализация в django-rest-framework — как кастомизировать наименование атрибута значением?

Для пример есть классы:

class Person(models.Model):
    name = models.CharField()
    ....

class Document(models.Model):
   person = models.ForeignKey(Person, related_name='docs', ..)
   doc_type = models.CharField()
   doc_number = models.CharField()
   doc_seria = models.CharField()
   ...


какие надо написать стерилизаторы что бы получить картинку следующего характера:
{
  "Person": {
      "name": "Ivan Petrov",
      "passport": {
           "doc_numer": "123455",
           "doc_seria": "1234"
       },
      "zagran" : {
         "doc_number": "12543",
         "doc_seria": 1234543
  }
}


Другими словами я хочу получить в результате сериализации вместо значения docs подстановку значения атрибута одного из полей связанной сущности Document
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
Поскольку схема ответа меняется, то описать список полей через сериалайзеры не получится.
Person = SerializerMethodField(method="get_person")

def get_person(obj):
    return {"name": ..., "passport": ...}

Но вооще лучше переделать схему ответа на список документов внутри Person.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы