DRF库,可以将资源属性作为字典操作
项目描述
drf-madprops 
DRF库,提供了操作资源属性列表的辅助工具,作为字典
由Yola团队编写和使用,以支持我们的免费网站构建器。
概述
这是关系型数据库中常见的场景,当某些表(例如User)通过从属键值表(例如UserPreference)扩展时。这允许动态地向User添加/删除字段(存储在UserPreference中)。通常这些属性模型结构非常简单,例如
class UserPreference(models.Model):
id = models.AutoField()
user = models.ForeignKey(User, related_name='preferences')
name = models.CharField()
value = models.CharField)
但是通过标准的DRF序列化器公开/操作它们并不方便。我们可能会得到如下内容
[
{"id": "id1", "user": "user1", "name": "property1", "value": "value1"},
{"id": "id2", "user": "user1", "name": "property2", "value": "value2"}
...
]
此库包含两个属性序列化器的基类(对于属性作为单独的资源公开和作为嵌套资源公开的情况),允许检索/操作父资源属性作为字典。例如,而不是上面的表示,我们将得到如下内容
{
"property1": "value1",
"property2": "value2",
...
}
使用方法
附加元选项
read_only_props
:无法通过序列化器更改的属性名称列表。json_props
:属性名列表,其值以JSON格式存储。序列化器在转换为表示时将使用json.loads()
处理这些值,在保存之前将使用json.dumps()
。
作为嵌套序列化器
from madprops.serializers import NestedPropertySerializer, PropertiesOwnerSerializer
class PreferenceSerializer(NestedPropertySerializer):
class Meta:
model = Preference
read_only_props = ('user_token', 'tutorial_email_sent')
json_props = ('packages',)
class UserSerializer(PropertiesOwnerSerializer):
preferences = PreferenceSerializer(many=True, required=False)
作为用于属性端点的序列化器
from madprops.serializers import PropertySerializer
class PreferenceSerializer(PropertySerializer):
class Meta:
model = Preference
read_only_props = ('user_token', 'tutorial_email_sent')
class PreferencePrivateViewSet(ModelViewSet):
serializer_class = PreferenceSerializer
paginate_by = None
测试
使用以下命令运行测试
tox
或者安装开发需求,然后使用以下命令运行测试
pip install -r requirements.txt
pytest tests
项目详情
关闭
drf-madprops-1.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 89af47236e6109a9b68bc236c1fc2daf6d225955d903f379c32331fcb995a29a |
|
MD5 | 92de1688a55e33866563ee8fc1e34b2d |
|
BLAKE2b-256 | 1a7b67089d2673f6c65eb74a21a4dff690fec60a5fe11db50ec74571668418bf |