我正在使用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
. 好的,我知道了 . 但有一些方法可以完成序列化?