Django 模型文件中的静态变量和方法,以及如何在 Django 管理界面中为静态变量添加十进制字段



我正在使用Django制作一个网页,该网页计算收集的硬币。每枚硬币都有其coin_type和coin_count。我还想要一个静态的总变量"总计"来计算硬币的总量。我想创建一个函数,可以计算所有实例coin_count的总和,并将该值分配给总计。但是,当我在类中声明"total"时,它的值对于每个实例都是不同的。 此外,我不知道如何在 Django 管理界面中为静态变量设置十进制字段。

在下面的代码中,我创建了一个全局变量"total",以便它的值不会针对每个类实例更改。但是,每次更改代码或重新启动服务器时,其值都会重置为 0。

这是我 models.py 文件

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
total = 0
class Coin(models.Model):
coin_type = models.CharField(max_length=100)
coin_count = models.DecimalField(max_digits=3,decimal_places=0)
def __str__(self):
return self.coin_type
def count(self):
return self.coin_count
def increase(self):
self.coin_count += 1
@staticmethod
def find_total():
global total
return total

我想要一个静态变量"total",它对所有实例具有相同的值,以及一个静态方法"calculate_total"来计算所有实例的"coin_count"的总和。 如果可能的话,谁能帮我在 Django 管理界面中为"总计"创建一个十进制字段?

显然,如果它只是作为变量存储在内存中,则当您重新启动时,总计将重置; 你还期待什么?

在像 Django 这样的环境中,这更没有意义,它通常由多个不共享全局数据的进程提供服务。

但是这样做是没有意义的。硬币存储在数据库中,因此要获得总数,您应该要求数据库执行 Sum 查询:

from django.db.models import Sum
Coin.objects.aggregate(total=Sum('coin_count'))

最新更新