Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架&;实体–;属性–;价值模型(EAV)数据模型 来自django.db导入模型的 #django用户 从django.contrib.auth.models导入用户 类实体(models.Model): """ EAV实体 """ 实体=模型.CharField(最大长度=216, null=False,默认值为=“实体名称”, name='entity',详细的\ u name='EAV'实体, db_index=True, 唯一=真 ) 类别资产(models.Model): """ EAV的资产 """ asset=models.CharField(max_length=216,null=False, 默认class='asset',name='asset', 详细名称=“EAV的资产” ) 实体=模型。外键(to=实体) 类元: 共同唯一=(“资产”、“实体”) 类值(models.Model): """ EAV值 """ 值=型号.CharField(最大长度=216, null=False,默认值为'value', name='value',verbose_name='EAV的值' ) 资产=模型。外键(to=资产) owner=models.ForeignKey(用户,详细名称='EAV owner',相关名称='EAV') 类元: 共同唯一=(‘价值’、‘资产’、‘所有者’)_Python_Django_Serialization_Django Rest Framework_Entity Attribute Value - Fatal编程技术网

Python Django Rest框架&;实体–;属性–;价值模型(EAV)数据模型 来自django.db导入模型的 #django用户 从django.contrib.auth.models导入用户 类实体(models.Model): """ EAV实体 """ 实体=模型.CharField(最大长度=216, null=False,默认值为=“实体名称”, name='entity',详细的\ u name='EAV'实体, db_index=True, 唯一=真 ) 类别资产(models.Model): """ EAV的资产 """ asset=models.CharField(max_length=216,null=False, 默认class='asset',name='asset', 详细名称=“EAV的资产” ) 实体=模型。外键(to=实体) 类元: 共同唯一=(“资产”、“实体”) 类值(models.Model): """ EAV值 """ 值=型号.CharField(最大长度=216, null=False,默认值为'value', name='value',verbose_name='EAV的值' ) 资产=模型。外键(to=资产) owner=models.ForeignKey(用户,详细名称='EAV owner',相关名称='EAV') 类元: 共同唯一=(‘价值’、‘资产’、‘所有者’)

Python Django Rest框架&;实体–;属性–;价值模型(EAV)数据模型 来自django.db导入模型的 #django用户 从django.contrib.auth.models导入用户 类实体(models.Model): """ EAV实体 """ 实体=模型.CharField(最大长度=216, null=False,默认值为=“实体名称”, name='entity',详细的\ u name='EAV'实体, db_index=True, 唯一=真 ) 类别资产(models.Model): """ EAV的资产 """ asset=models.CharField(max_length=216,null=False, 默认class='asset',name='asset', 详细名称=“EAV的资产” ) 实体=模型。外键(to=实体) 类元: 共同唯一=(“资产”、“实体”) 类值(models.Model): """ EAV值 """ 值=型号.CharField(最大长度=216, null=False,默认值为'value', name='value',verbose_name='EAV的值' ) 资产=模型。外键(to=资产) owner=models.ForeignKey(用户,详细名称='EAV owner',相关名称='EAV') 类元: 共同唯一=(‘价值’、‘资产’、‘所有者’),python,django,serialization,django-rest-framework,entity-attribute-value,Python,Django,Serialization,Django Rest Framework,Entity Attribute Value,序列化程序 class EntitySerializer(serializers.Serializer): id=序列化程序.IntegerField(label='id',read_only=True) entity=serializers.CharField(label='entity of EAV',max_length=216,required=False) 类AssetSerializer(serializers.Serializer): id=序列化程序.IntegerField(l

序列化程序

class EntitySerializer(serializers.Serializer):
id=序列化程序.IntegerField(label='id',read_only=True)
entity=serializers.CharField(label='entity of EAV',max_length=216,required=False)
类AssetSerializer(serializers.Serializer):
id=序列化程序.IntegerField(label='id',read_only=True)
asset=serializers.CharField(默认值='asset',label='EAV的资产',max_length=216)
实体=EntitySerializer(只读=True)
类ValueSerializer(serializers.Serializer):
id=序列化程序.IntegerField(label='id',read_only=True)
value=serializers.CharField(默认值='value',label='EAV的值',max_length=216)
asset=AssetSerializer(只读=True)
所有者=UserModelSerializer(只读=真)
类EntityAssetValueSerializer(serializers.Serializer):
entity=EntitySerializer(many=True)
资产=AssetSerializer(多个=True)
value=ValueSerializer(many=True)
预期的序列化

{
“实体”:[
{
“实体”:“英雄”,
“id”:1,
“所有者”:{
“姓名”:“蝙蝠侠”,
“id”:“1”
},
“团体”:[
{
“id”:“1”,
“名称”:“超级英雄组”
}
],
“资产”:[
{
“资产”:“名称”,
“价值”:“蝙蝠侠”,
“资产id”:1,
“value_id”:1
},
{
“资产”:“年龄”,
“值”:“30”,
“资产id”:1,
“价值id”:2
}
]
},
{
“实体”:“英雄”,
“id”:1,
“所有者”:{
“名字”:“超人”,
“id”:“2”
},
“团体”:[
{
“id”:“1”,
“名称”:“超级英雄组”
}
],
“资产”:[
{
“资产”:“名称”,
“价值”:“超人”,
“资产id”:1,
“价值id”:3
},
{
“资产”:“年龄”,
“值”:“30”,
“资产id”:1,
“价值id”:4
}
]
},
{
“实体”:“Villian”,
“id”:1,
“所有者”:{
“姓名”:“小丑”,
“id”:“3”
},
“团体”:[
{
“id”:“2”,
“名称”:“SuperVillians集团”
}
],
“资产”:[
{
“资产”:“名称”,
“价值”:“小丑”,
“资产id”:3,
“价值id”:4
},
{
“资产”:“年龄”,
“值”:“30”,
“资产id”:4,
“价值id”:5
}
]
},
{
“实体”:“人”,
“id”:1,
“所有者”:{
“名字”:“弱小的人类”,
“id”:“3”
},
“团体”:[
{
“id”:“2”,
“名称”:“人类组”
}
],
“资产”:[
{
“资产”:“名称”,
“价值”:“人”,
“资产id”:5,
“价值id”:6
},
{
“资产”:“年龄”,
“值”:“30”,
“资产id”:6,
“价值id”:7
}
]
}
]
}
实现了序列化

{
“eav”:[
{
“id”:1,
“价值”:“人”,
“资产”:{
“id”:1,
“资产”:“名称”,
“实体”:{
“id”:1,
“实体”:“人”
}
},
“所有者”:{
“id”:1,
“用户名”:“小矮人”
}
},
{
“id”:2,
“价值”:“26”,
“资产”:{
“id”:2,
“资产”:“年龄”,
“实体”:{
“id”:1,
“实体”:“人”
}
},
“所有者”:{
“id”:1,
“用户名”:“小矮人”
}
},
{
“id”:3,
“价值”:“26”,
“资产”:{
“id”:3,
“资产”:“年龄”,
“实体”:{
“id”:2,
“实体”:“英雄”
}
},
“所有者”:{
“id”:2,
“用户名”:“蝙蝠侠”
}
},
{
“id”:4,
“价值”:“蝙蝠侠”,
“资产”:{
“id”:3,
“资产”:“名称”,
“实体”:{
“id”:2,
“实体”:“英雄”
}
},
“所有者”:{
“id”:2,
“用户名”:“蝙蝠侠”
}
},
{
“id”:5,
“价值”:“26”,
“资产”:{
“id”:3,
“资产”:“年龄”,
“实体”:{
“id”:2,
“实体”:“英雄”
}
},
“所有者”:{
“id”:3,
“用户名”:“超人”
}
},
{
“id”:6,
“价值”:“超人”,
“资产”:{
“id”:4,
“资产”:“名称”,
“实体”:{
“id”:2,
“实体”:“英雄”
class Asset(models.Model):
    """
    Asset of EAV
    """
    asset = models.CharField(max_length=216, null=False,
                            default='asset', name='asset',
                            verbose_name='Asset of EAV'
                            )
    entity = models.ForeignKey(to=Entity, related_name='asset_entity')

class Value(models.Model):
    """
    Value of EAV
    """
    value = models.CharField(max_length=216,
                             null=False, default='value',
                             name='value', verbose_name='Value of EAV'
                             )
    asset = models.ForeignKey(to=Asset, related_name='asset_value')
    owner = models.ForeignKey(User, verbose_name='EAV Owner', related_name='eav')
 queryset = Entity.objects.filter('**condition comes here**')
                .values('id', 'entity', 'asset_entity', 'asset_entity__asset', 'asset_entity__asset_value', 'asset_entity__asset_value__value',
                    'asset_entity__asset_value__owner_id',)
serializer = serializer(queryset, many=True, context={'request': request})
class Owner_Serializer(serializers.ModelSerializer)

        class Meta:
            model = User
            exclude = ('**exclude fields you want to exclude**', )


class EntitySerializer(serializers.Serializer):

        id = serializers.IntegerField(source='id')
        entity = serializers.CharField(source='entity')
        owner =  serializers.SerializerMethodField()
        groups =  serializers.SerializerMethodField()
        asset =  serializers.SerializerMethodField()


        def get_owner(self, obj):
            return Owner_Serializer(obj.get('asset_entity__asset_value__owner_id'), context=self.context).data