我正在尝试使用Django rest API创建一个框架。 我想使用工厂模式动态配置序列化程序字段和序列化程序的类变量名称。我的代码有点复杂,所以这里是问题的简化版本。
from rest_framework import serializers
class FixedSrializer(serializers.Serializer):
email= serializers.EmailField()
fixed_serializer=FixedSrializer(data={"email":"invalidemail"})
fixed_serializer.errors
#OUTPUT: {'email': [u'Enter a valid email address.']}
# Trying Above by dynamically assigning class var
class CustomSrializer(serializers.Serializer):
pass # no class var assigned
#setattr(CustomSrializer,"email",serializers.EmailField())
CustomSrializer.email=serializers.EmailField()
custom_serializer=CustomSrializer(data={"email":"invalidemail"})
custom_serializer.errors
#OUTPUT# {}
#EXPECTED# {'email': [u'Enter a valid email address.']}
我认为这可能是因为动态改变了类变量。请纠正我做错的地方。
如果你仔细看到我的帖子1)FixedSrializer =>包含电子邮件字段2)CustomSrializer。不包含电子邮件字段,但在下一行分配。其余每件事都是相同的,我得到不同的输出。我正在使用django-rest-framework.org。