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

Static variable and method in Django models file and how to add a decimal field for a static variable in Django admin interface

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

在下面的代码中,我创建了一个全局变量 "total",因此它的值不会在每个 class 实例中改变。但是,每次我更改代码或重新启动服务器时,它的值都会重置为 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 管理界面中为 "total" 创建一个小数字段?

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

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

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

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