У меня есть следующая структура в моих моделях 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'
}
]
}
Спасибо