Джанго Тастипи - Ресурс по подклассам моделей - PullRequest
0 голосов
/ 12 октября 2018

У меня есть следующая структура в моих моделях django (версия django 1.7)

models.py

class Contact(models.Model):       
   email = models.CharField(verbose_name='Email', max_len=50)

class Person(Contact):
   first_name = models.CharField(verbose_name='First Name', max_len=50)
   last_name = models.CharField(verbose_name='Last Name', max_len=50)

class Company(Contact):
   company_name = models.CharField(verbose_name='Company Name', max_len=50)
   department = models.CharField(verbose_name='Department Name', max_len=50)

class Service(models.Model):
   service_name = models.CharField(verbose_name='Service Name', max_len=50)
   contact = models.ManyToManyField(Contact, verbose_name='Contact')

api / resources.py

class PersonResource(ModelResource):
   class Meta:
       queryset=Person.objects.all()

class CompanyResource(ModelResource):
   class Meta:
       queryset=Company.objects.all()

class ContactResource(ModelResource):
   class Meta:
       queryset=Contact.objects.all()

class ServiceResource(ModelResource):
   class Meta:
       queryset=Service.objects.all()    
   # fields
   contact = fields.ToManyField(ContactResource, attribute='contact', full=True)

Исходя из вышеизложенной структуры, мне необходимо полностью сериализовать службу, где поле контакта разрешается в правильный ресурс на основе подкласса контакта.Я пытался сделать это методом dehydrate, но это не сработало.Есть ли другой способ добиться этого, предпочтительно, без использования дополнительных пакетов?

Пример вывода

{
  'service_name': 'Helpdesk',
  'contact': [
    {
      'first_name': 'John',
      'last_name': 'Doe',
      'email': 'jd@company.com'
    },
    {
      'company_name': 'C.O.M.P.'
      'department': 'technical',
      'email': 'tech@comp.com'
    }
  ]
}

Спасибо

...