在Django中如何将这个pandas数据帧转换为模板?

时间:2017-10-27 14:03:38

标签: python django pandas

django新手问题:

django和pandas的文档侧重于模型。我需要更好地了解如何跟踪涉及大熊猫的模型,视图和模板。

这是一个应用程序问题: 我试图在应用程序中显示移动电话津贴。

例如,每个移动连接都有强制性资费,还有四个可选的增值服务('VAS')。关税不能是增值税,但你可以有四次相同的增值税来提高你的免税额。

有一个表“关税”用于管理所有关税和增值税的详细信息。

对于每个呼叫线路标识符(移动电话连接),我们需要读取相关资费和四个VAS列之和的呼叫分钟数据,数据兆字节数和文本数量限额。

# models.py

class Tariff(models.Model): 
                tariff_name = models.CharField(max_length=200, unique=True, db_index=True)
                minutes = models.IntegerField(blank=True, null=True,)
                texts = models.IntegerField(blank=True, null=True,)
                data = models.FloatField(null=True, default=0)
                is_tariff_not_VAS = models.BooleanField(default=True)


class CallLineIdentifiers(models.Model):
        mobile_tel_number = models.CharField(max_length=11, blank=False, null=False, db_index=True)
        tariff = models.ForeignKey(Tariff, related_name = 'tariffName' )
        vas_1 = models.CharField(max_length=100, blank=False, null=False, default=0,)
        vas_2 = models.CharField(max_length=100, blank=False, null=False, default=0,)
        vas_3 = models.CharField(max_length=100, blank=False, null=False, default=0,)
        vas_4 = models.CharField(max_length=100, blank=False, null=False, default=0,)

到目前为止,这么好。我可以渲染一个html页面,显示基于主要关税的移动设备津贴。 如果我想要包括VAS津贴,事情会更棘手。您不能只让每个VAS的外键返回到关税表。

但也许,是否有解决问题的django模型重新规范?

我之前使用过Pandas,这个问题 - 但是在django之外。

这在大熊猫中起作用,我在其中加入了一个用于呼叫行标识符的表格,其中包含每个关税和VAS的副本,如:

import pandas as pd

# df = a dataframe of call line identifiers, containing telephone number
# and the names of any 'Tariff', 'VAS ONE', 'VAS TWO', 'VAS THREE','VAS FOUR'
# that are assigned to that mobile.

# tandv = dataframe of tariff and vas with attributes, where
# 'Tariff' is unique primary key and the name of each tariff or VAS.



tariff_allowance = pd.merge(df, tandv, on 'Tariff')
v1_allowance = pd.merge(df, tandv, left_on = 'VAS ONE', right_on = 'Tariff')
v2_allowance = pd.merge(df, tandv, left_on = 'VAS TWO', right_on = 'Tariff')
v3_allowance = pd.merge(df, tandv, left_on = 'VAS THREE', right_on = 'Tariff')
v4_allowance = pd.merge(df, tandv, left_on = 'VAS FOUR', right_on = 'Tariff')

allow = tariff_allowance.merge(v1_allowance,on="cli")
            .merge(v2_allowance,on="cli")    
            .merge(v3_allowance,on="cli")
            .merge(v4_allowance,on="cli")  

# then, sum calls, data, texts attributes.
# keep only the necessary columns. 
# gives us an dataframe: "CLIs_with_allowances"

我的pandas在django模型中应该看起来像什么?

如何从结果数据框“CLIs_with_allowances”到html页面?

谢谢。

0 个答案:

没有答案