
这个问题仍然有一些看法,因此必须注意还有另一种方法,它比我在此处发布的原始答案要干净得多。
你可以只使用序列化程序的meta类的extra_kwargs属性,如下所示:
class UserSerializer(ModelSerializer): class meta: model = User extra_kwargs = {"username": {"error_messages": {"required": "Give yourself a username"}}}原始答案:
使用@mariodev的答案,我在项目中创建了一个新类,该类可以执行以下 *** 作:
from rest_framework.serializers import ModelSerializer, ModelSerializerOptionsclass CustomErrorMessagesModelSerializerOptions(ModelSerializerOptions): """ meta class options for CustomErrorMessagesModelSerializerOptions """ def __init__(self, meta): super(CustomErrorMessagesModelSerializerOptions, self).__init__(meta) self.error_messages = getattr(meta, 'error_messages', {})class CustomErrorMessagesModelSerializer(ModelSerializer): _options_class = CustomErrorMessagesModelSerializerOptions def __init__(self, *args, **kwargs): super(CustomErrorMessagesModelSerializer, self).__init__(*args, **kwargs) # Run through all error messages provided in the meta class and update for field_name, err_dict in self.opts.error_messages.iteritems(): self.fields[field_name].error_messages.update(err_dict)第一个可以meta像一样向序列化器添加新的class属性
ModelForm。第二个继承自
ModelSerializer@mariodev的技术并使用它来更新错误消息。
剩下要做的就是继承它,然后做类似的事情:
class UserSerializer(CustomErrorMessagesModelSerializer): class meta: model = User error_messages = {"username": {"required": "Give yourself a username"}}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)