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'))
我正在使用 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'))