django orm 有个defer方法,指定模型排除的字段。
如下返回的Queryset, 排除‘username’, ‘id’。
users=models.UserInfo.objects.defer('username','id')
或
users=models.UserInfo.objects.filter(...).defer('username','id')
再如下,使用django自带serializers进行序列,发现序列化的数据仍存在‘username’, 'id’这两个字段。
data = serializers.serialize('json', users)
如何解决?
在使用django自带serializers时,添加fields选项,将不需要的字段放入即可:
users=models.UserInfo.objects.all()
data = serializers.serialize('json', users, fields=('username', 'id'))
简单实现序列化
def to_dict(self, serialize_filed=None, exclude_field=None):
"""
Model序列化
:param serialize_filed: 需要序列化的字段
:param exclude_field: 不需要序列化的字段
:return:
"""
if exclude_field:
serialize_filed = [field.name for field in self._meta.fields if field.name not in exclude_field]
data = dict((field, getattr(self, field)) for field in serialize_filed)
return data
if not serialize_filed:
serialize_filed = [field.name for field in self._meta.fields]
data = dict((field, getattr(self, field)) for field in serialize_filed)
return data