django在不影响数据库的情况下创建对象

时间:2013-10-25 00:56:51

标签: python django

我有一个函数来计算数据总和(这不是一个简单的总和,每次都有一个增加的数字,每次都增加它)的函数。它是在视图中计算的,我需要将它们传递给模板。我将它存储在词典portfolio_dict[year] += amount

{'2013': Decimal('92.96892879384746351465539182'), '2012': Decimal('71.48765907571338816005401399')}

但我还需要一些额外的数据发送。让我们说:

date:date
amount:Decimal
year:string

我知道拥有一年和一个日期听起来有点愚蠢。我用年份作为指数。如何将这些数据传递给模板/将日期添加到当前字典? 但是现在,我总是使用Model,并且我传递了一个模型实例的列表。但是现在我不需要将这些数据存储在数据库中,所以我不想创建模型。 如果我不希望它在数据库中,我在哪里创建django中的新类? 或者我应该使用集合或数据结构吗?

1 个答案:

答案 0 :(得分:1)

只有django.db.Model个实例存储在数据库中(并且只有在您明确要求时才会存在)。另外,这只是普通的Python,您可以根据需要创建和使用自己的类。

但无论如何:如果你需要的是一个以年为目标的(日期,数量)项目的集合,那么一个dicts的词典就足够了:

{
   '2013': {
      'amount': Decimal('92.96892879384746351465539182'), 
      'date': datetime.date(2013, 10, 25)
      },
   # etc
}

或者,如果您每年需要多个(金额,日期),带有列表或词组的词典:

{
   '2013': [
      {
        'amount': Decimal('92.96892879384746351465539182'), 
        'date': datetime.date(2013, 10, 25)
      },
      {
        'amount': Decimal('29.9689287'), 
        'date': datetime.date(2013, 10, 21)
      },
    ],

   # etc
}

事实上,正确的结构取决于您将如何使用数据。