1.手动写的方式,用过一次,感觉自己很蠢。
2.转化为list,但是转化为前端需要的数据的不好,特别是前后端分离之后,故舍弃
json.dumps(list(my_table.objects.all().values()))
3.__dict__
这个可以转化,但是会添加一些奇怪的东西在dict里面
4.model_to_dict
可以使用
from django.forms import model_to_dict
5.to_dict() 自己定义的,还不错,可能需要写写继承啥的比较好用
class User(models.Model): ... def to_dict(self, fields=None, exclude=None): data = {} for f in self._meta.concrete_fields + self._meta.many_to_many: value = f.value_from_object(self) if fields and f.name not in fields: continue if exclude and f.name in exclude: continue if isinstance(f, ManyToManyField): value = [ i.id for i in value ] if self.pk else None if isinstance(f, DateTimeField): value = value.strftime('%Y-%m-%d %H:%M:%S') if value else None data[f.name] = value return data
但是,以上所有的方法都只能对单个querySet中的值进行操作,之后还需要一个一个转化,费劲。