这个问题是在我现在开发的项目中出现的。这是我们在决定自己扩展 Django 序列化器之前要使用的解决方案。不过,这应该可以很好地满足您的需求。
为了解决问题而不弄脏你的手,我建议wadofstuff 的 Django 完整序列化器.
使用 wiki 解决问题后进行设置后,您的示例将如下所示:
您需要向模型添加一个方法,该方法返回该模型的 Python 表示形式QuerySet
.
from django.db import models
from django.core import serializers
class Patient(models.Model):
name = models.CharField('Name', max_length=50)
def extra_address(self):
return serializers.serialize('python', self.address.all())
class Address(models.Model):
town = models.CharField('Town/Village', max_length=50)
patient = models.OneToOneField(Patient, related_name='address')
然后,您可以将该方法添加到更强大的序列化程序所采用的额外列表中。
from django.core import serializers
print serializers.serialize('json', Patient.objects.all(), extras=('extra_address',))
An extras
key 将被添加到字典中,并且将包含您需要的任何额外信息。