在django中使用pandas操作django的ORM查询出来的QuerySet对象,可以使用插件django-pandas。
截止教程书写时间,django-pandas已发布到0.6.1。
依赖:django>=1.4.5
Django-model-utils >=1.4.0
Pandas >=0.12.0
当然,还需要numpy
用法:
1、IO模块:
该django-pandas.io模块提供了一些方便的方法,以便从django的查询集转换成DataFrames的创建。
read_frame
参数:
l qs :一个django的QuerySet。
l fieldnames :用于创建DataFrame的模型字段名称列表。可以使用双下划线指定另一个model中的相关字段,以通常的Django方式跨越关系。
l index_col:使用指定用于DataFrame索引的字段名称。如果索引字段不在fieldnames参数中,则将会添加,注意这里的字段必须为该model里的字段。
l coerce_float:Boolean(布尔值),默认为True。尝试将值转换为非字符串,将非数字对象(如decimal.Decimal)转化为浮点类型。
Eg:
model.py
class Img_info(models.Model): ''' 图片信息表 ''' img_name = models.CharField(max_length=128, verbose_name="图片名") img = models.ImageField(upload_to="img", verbose_name="图片") class Meta: db_table = "img_info" class Product_score(models.Model): ''' 图片打分表 ''' img_of = models.ForeignKey(Img_info, on_delete=models.CASCADE, verbose_name="图片") scoring_staff = models.CharField(max_length=32, verbose_name="打分员") score_num = models.FloatField(verbose_name="分数") class Meta: db_table = "product_score"
views.py
1、直接转化
from django_pandas.io import read_frame def tset(request): qs = Product_score.objects.all() qs_dataframe = read_frame(qs=qs) print(qs_dataframe)