如何在不使用额外的情况下按月计算总数?
我目前正在使用:
例.
到目前为止我尝试过的.
#Doesn't work for me but I don't mind because I don't want to use extra
truncate_month = connection.ops.date_trunc_sql('month','day')
invoices = Invoice.objects.filter(is_deleted = False,company = company).extra({'month': truncate_month}).values('month').annotate(Sum('total'))
----
#It works but I think that it's too slow if I query a big set of data
for current_month in range(1,13):
Invoice.objects.filter(date__month = current__month).annotate(total = Sum("total"))
Run Code Online (Sandbox Code Playgroud)
而这一个,答案似乎很好,但我无法导入TruncMonth模块.
PS我知道这个问题已被多次询问,但我没有看到任何答案.
谢谢!
解决方案:
感谢@ Vin-G的回答.
我在使用带有JSONField的ArrayField插入字段时遇到问题.
models.py
locations = ArrayField(JSONField(null = True,blank = True), blank=True, null = True)
Run Code Online (Sandbox Code Playgroud)
插入
location_arr = [{"locations" : "loc1","amount":Decimal(100.00)},{"locations" : "loc2","amount":Decimal(200.25)}]
instance.locations = location_arr
instance.save()
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到了
列"locations"的类型为jsonb [],但表达式的类型为text []
第1行:...... d"= 2517,"locations"= ARRAY ['{"loc ...
提示:您需要重写或转换表达式.
所以我尝试使用以下方式转储它:
import json
location_arr = [{"locations" : "loc1","amount":Decimal(100.00)},{"locations" : "loc2","amount":Decimal(200.25)}]
instance.locations = json.dumps(location_arr)
instance.save()
Run Code Online (Sandbox Code Playgroud)
然后我得到了这个
第1行:...... d"= 2517,"locations"='[{"loc":......
详细信息:"["必须引入显式指定的数组维度.
我在用:
在 ModelForm 中调用 save() 函数之前,我想根据 max_digits 和 decimal_places 属性自动舍入 Django 的 DecimalField。
目前使用以下:
到目前为止我尝试过的。
https://djangosnippets.org/snippets/10554/
模型.py
amount = models.DecimalField(max_digits = 19, decimal_places = 2)
Run Code Online (Sandbox Code Playgroud)
视图.py
PS会在不同的领域和不同的模型中应用它
data = {"amount" : 100.1234,"name":"John Doe",...}
form = My_form(data)
if form.is_valid(): //the error throws from here.
form.save()
else:
raise ValueError(form.errors)
Run Code Online (Sandbox Code Playgroud)
表格.py
我计划清理 clean() 函数中的字段并对所有小数字段进行四舍五入,但是当我尝试打印 raw_data 时,没有“金额字段”。
class My_form(forms.ModelForm):
Class Meta:
model = My_model
fields = ('amount','name')
def clean(self):
raw_data = self.cleaned_data
print(raw_data) //only prints {'name' : 'John Doe'}
Run Code Online (Sandbox Code Playgroud) 我只是想知道多登录扩展是如何工作的。我已经阅读了 chrome 中的所有文档,但没有看到像 multilogin 那样的任何会话重复。
这是这个扩展的链接。 https://chrome.google.com/webstore/detail/multilogin/nccllfnllopfpcbjdgjdlfmomnfgnnbk?hl=en
谢谢。
我试图使用Zillow API.实际上,它正在我的本地工作并返回我需要的所有数据但是当我尝试在我们的托管中发布它时,API返回"请求被阻止,已检测到爬虫".
这是在我的本地但不在我们的服务器中工作的示例代码.
echo @file_get_content("example.xml");
Run Code Online (Sandbox Code Playgroud)
谢谢!
如何将字符串转换为表单?
在模型中你可以只使用这条线。
model = apps.get_model(app_label='app_label', model_name='str_model')
Run Code Online (Sandbox Code Playgroud)
我有 3 种形式,即:
并愿意这样做。
type = "customer"
form = "Fund_"+type #that would make "Fund_customer"
form = apps.get_form(form) #I wonder if there's a function like this.
Run Code Online (Sandbox Code Playgroud)
我只是不想做if条件来实现这一点。
每次当我有代码更新时重新启动服务器时,我都会遇到 uwsgi 问题。
当我使用“sudo restart account”重新启动 uwsgi 时,停止和启动实例之间存在一个小间隙,导致停机并停止所有当前请求。
当我尝试“sudo reloadcounting”时,它有效,但我的记忆力上升(双倍)。当我运行命令“ps aux | grep account”时,它显示我有 10 个正在运行的进程 (accounting.ini),而不是 5 个,并且当内存达到限制时,它会冻结我的服务器。
会计.ini
我在跑步