我正在使用eav-django进行项目,我需要使用DjangoRestFramework序列化它的模型,但是我遇到了一些问题 .

我的模型( models.py )是eav-django所需的标准模型:

class ServiceSchema(BaseSchema):
    pass

class ServiceChoice(BaseSchema):
    schema = models.ForeignKey(ServiceSchema, related_name='choices')

class ServiceAttr(BaseAttribute):
    schema = models.ForeignKey(ServiceSchema, related_name='attrs')
    choice = models.ForeignKey(ServiceChoice, related_name='attrs', null=True)

class ServiceEntity(BaseEntity):
    title = models.CharField(max_length=100)
    attrs = generic.GenericRelation(ServiceAttr, object_id_field='entity_id', content_type_field='entity_type')

    @classmethod
    def get_schemata_for_model(cls):
        return ServiceSchema.objects.all()

    def __unicode__(self):
        return self.title

class ServiceFacetSet(BaseFacetSet):
    def get_queryset(self, **kwargs):
        return ServiceEntity.objects.filter(**kwargs)

class HostSchema(BaseSchema):
    pass

class HostChoice(BaseChoice):
    schema = models.ForeignKey(HostSchema, related_name='choices')

class HostAttr(BaseAttribute):
    schema = models.ForeignKey(HostSchema, related_name='attrs')
    choice = models.ForeignKey(HostChoice, related_name='attrs', null=True)

class HostEntity(BaseEntity):
    title = models.CharField(max_length=100)
    attrs = generic.GenericRelation(HostAttr, object_id_field='entity_id', content_type_field='entity_type')
    services = models.ManyToManyField(ServiceEntity, null=True, blank=True, default=None, related_name='hosts')

    @classmethod
    def get_schemata_for_model(cls):
        return HostSchema.objects.all()

    def __unicode__(self):
        return self.title

class HostFacetSet(BaseFacetSet):

    def get_queryset(self, **kwargs):
        return HostEntity.objects.filter(**kwargs)

我正在尝试使用 serializers.py 中的这段代码序列化它们:

class ServiceSchemaSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = ServiceSchema


class ServiceChoiceSerializer(serializers.HyperlinkedModelSerializer):
    schema = ServiceSchemaSerializer(many=False)

    class Meta:
        model = ServiceChoice
        fields = ('schema', )


class ServiceAttrSerializer(serializers.HyperlinkedModelSerializer):
    schema = ServiceSchemaSerializer(many=False)
    choice = ServiceChoiceSerializer(many=False)

    class Meta:
        model = ServiceAttr
        fields = ('schema', 'choice')


class ServiceEntitySerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = HostEntity
        fields = ('title', 'attrs')


class HostSchemaSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = HostSchema

class HostChoiceSerializer(serializers.HyperlinkedModelSerializer):
    schema = HostSchemaSerializer(many=False)

    class Meta:
        model = HostChoice
        fields = ('schema', )

class HostAttrSerializer(serializers.HyperlinkedModelSerializer):
    schema = HostSchemaSerializer(many=False)
    choice = HostChoiceSerializer(many=False)

    class Meta:
        model = HostAttr
        fields = ('schema', 'choice')

class HostEntitySerializer(serializers.HyperlinkedModelSerializer):
    services = ServiceEntitySerializer(many=True)

    class Meta:
        model = HostEntity
        fields = ('title', 'attrs', 'services')

Django休息框架错误是 [...] GenericRelatedObjectManager is not JSON serializable . 好的,我知道了 . 但有一些方法可以完成序列化?