我正在尝试用两个本身聚合的值来计算百分比.解释我所追求的SQL查询如下:
SELECT (SUM(field_a) / SUM(field_b) * 100) AS percent
FROM myapp_mymodel
GROUP BY id
ORDER BY id
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下内容来构造QuerySet,但不幸的是它不包含额外的字段:
MyModel.objects.values('id').annotate(
sum_field_a=Sum('field_a'),
sum_field_b=Sum('field_b')).extra(
select={'percent': 'sum_field_a / sum_field_b * 100'})
Run Code Online (Sandbox Code Playgroud)
令我恼火的是 - 根据Django文档 - 这似乎是要走的路:
当values()子句用于约束结果集[...]中返回的列而不是为原始QuerySet中的每个结果返回带注释的结果时,原始结果将根据指定字段的唯一组合进行分组在values()子句中.然后为每个唯一组提供注释; 注释是在组的所有成员上计算的.
资料来源: http ://docs.djangoproject.com/en/dev/topics/db/aggregation/#values
如果在extra()子句之后使用values()子句,则extra()中的select参数定义的任何字段都必须显式包含在values()子句中.但是,如果在values()之后使用extra()子句,则select将添加的字段将自动包含在内.
资料来源: http ://docs.djangoproject.com/en/dev/ref/models/querysets/#values
可能重复:
如何删除github上的提交?
因此,我们项目的团队成员已经承诺并向我们的git项目存储库推送了700多万个废话...她认为她只添加了2个图像,但不知何故最终将她桌面的全部内容复制到git文件夹并以某种方式提交它.我不知道为什么她认为2张照片上传20分钟并不奇怪...
无论如何,我现在处于困境,作为这个项目的负责人.就我而言,我有两个选择,我不喜欢任何一个
我可以从bitbucket中删除存储库,然后用我想要的文件重新启动它.这将删除所有以前的编辑,因为只有我想要的文件的当前版本可用
我可以删除错误的数据并推送更改.只有我们想要的文件才会被进一步管理,但是她放在那里的所有额外的麻烦将永远存在于git中,这使我们的项目膨胀100倍.
有没有办法永远删除提交,就好像它从未发生过一样?除了更多的补救性git训练之外,管理这种打嗝的最佳方法是什么...
首先,每个人都过得愉快.我有这个脚本来处理我的数据库的登录:http: //pastebin.com/ctUEczRf 我使用pastebin因为它太长而无法使用代码标签.当我运行它它返回我:
This page contains the following errors:
error on line 2 at column 1: Extra content at the end of the document
Below is a rendering of the page up to the first error.
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决它,我之前从未使用过XML.这是与CMS一起提供给我的.
我正在制作一个能够上传单个或多个文件或文件夹的应用程序.intent-filter的定义如下:
<activity android:name=".UploadActivity" android:launchMode="singleTop" android:theme="@style/Theme.Sherlock">
<intent-filter android:label="@string/upload_intent">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="application/*" />
<data android:mimeType="audio/*" />
<data android:mimeType="image/*" />
<data android:mimeType="media/*" />
<data android:mimeType="multipart/*" />
<data android:mimeType="text/*" />
<data android:mimeType="video/*" />
</intent-filter>
<intent-filter android:label="@string/upload_intent">
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="*/*" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
这适用于Blackmoon文件资源管理器和Android 4.0.3图库.我的应用程序显示在"共享"菜单中.但是,它也会在浏览器中显示,当您长按URL并选择共享页面时.
当我将文本文件发送到我的应用程序时,我得到了这个:
getIntent().getAction() returns Intent.ACTION_SEND
getIntent().getType() returns "text/plain"
getIntent().getScheme() returns null
getIntent().getExtras().getString(Intent.EXTRA_STREAM) returns the filename
Run Code Online (Sandbox Code Playgroud)
但是,从浏览器发送URL会返回相同的内容减去 Intent.EXTRA_STREAM.我可以在代码中轻松检测到这一点并说"嘿,我无法上传文字!" 但我宁愿改变意图过滤器,以便它只在有EXTRA_STREAM时触发.有可能这样做吗?
(我尝试使用android:scheme但不会区分文件和共享的文本字符串,因为它们都是null ...)
所以我有一个奇怪的问题.我正在进行2项活动.其中一个活动显示一个ListView,其数据通过一个很长的Extra来获取,我用它来通过database.query中的WHERE子句获取结果.单击ListView项时会调用另一个Activity,允许某人向ListView的数据库添加内容.
活动名称是DaysActivity.java(列表视图DayAddActivity.java的活动)和(允许某人添加一天的活动,然后显示在DaysActivity.javaListView中).
我遇到的问题是,当finish() DayAddActivity.java它返回时DaysActivity,ListView仍然完全填充.但是,如果我点击后退按钮DayAddActivity.java(带有我的应用程序图标的操作栏中标题左侧的按钮),当它返回到DaysActivity.java时,ListView为空/消失.
下面是两个代码:
DaysActivity.java:
package com.gauvion.gfit;
import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class DaysActivity extends ListActivity {
private DaysDataSource datasource;
private SimpleCursorAdapter dataAdapter;
private boolean isEditing = false;
private Toast toast_deleted;
private String[] columns = new String[] { MySQLiteHelper.COLUMN_NAME, MySQLiteHelper.COLUMN_DAY };
private int[] to;
private long routineDataID;
private String …Run Code Online (Sandbox Code Playgroud) 在我基于 qmake 的项目中,我想在编译之前对某些文件运行“xxd”。根据文档,我的 pro 文件中的相关部分如下所示:
SHADERS = shader/tone.frag \
shader/trans.frag \
shader/hue.frag
# xxd
xxd.output = ${QMAKE_FILE_NAME}.xxd
xxd.commands = xxd -i ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
xxd.depends = SHADERS
xxd.input = $$SHADERS
xxd.variable_out = HEADERS
QMAKE_EXTRA_COMPILERS += xxd
Run Code Online (Sandbox Code Playgroud)
Qmake 不会抱怨,但它也根本不运行 xxd。我是否必须为要预处理的每个文件创建特殊目标?(生成的*.xxd文件不会被我事后编译,只包含在其他cpp文件中)
编辑:在 smokris 的帮助下,这就是我修复 pro 文件中的部分的方法:
# xxd
xxd.output = ${QMAKE_FILE_NAME}.xxd
xxd.commands = xxd -i ${QMAKE_FILE_NAME} > ${QMAKE_FILE_OUT}
xxd.depends = $$SHADERS
xxd.input = SHADERS
xxd.variable_out = HEADERS
Run Code Online (Sandbox Code Playgroud) 我的模拟器停止工作,它只是显示黑屏,当我尝试使用外部设备时,应用程序不断崩溃,它停止并关闭,然后有一个 haxm 安装程序更新,我尝试了它,但出现了此警告,但它仍然无法工作
尝试过外部设备,尝试安装更新
警告:在不一致的位置观察到包 ID“extras;intel;Hardware_Accelerated_Execution_Manager”
警告:在不一致的位置观察到包 ID“extras;intel;Hardware_Accelerated_Execution_Manager”
因此,查询集中的额外字段可用于向选择查询添加其他列,而后者又可以设置为默认排序.到目前为止,我已经能够实现这一点:创建了一个额外的字段,然后将其设置为默认排序.
qs = qs.extra(select={'natname':"concat('0', nat, name)"}, order_by=['natname'])
Run Code Online (Sandbox Code Playgroud)
现在,在我的管理界面中,我有其他字段{name, nat, location, space, ....},表格中的结果按natname页面加载时排序...完美.
但是现在我想在name现场进行排序,但不是按顺序排序name,我希望它按顺序排序natname.这可能吗?
所以即使natname是一个额外的字段,我想以某种方式绑定列name与natname订购时.
现在,如果我这样做qs.query.__str__(),我会得到sql查询order by natname.当我点击列时name,按更改顺序排序name,但仅针对此特殊情况,我希望它按顺序排序natname.这可能吗?
我已经了解了Django如何为这些自动化管理页面生成标题和视图,<django-installation-path>/contrib/admin但它只引用了此模型中list_display定义的集合ModelAdmin.如果我在那里进行任何更改,则显示的列将在admin-view中更改.
听起来有点令人困惑.如果您需要特殊细节,请随时询问.
谢谢.
[Microsoft Visual Studio 2008,Windows 7 Professional 64]
我有一个扩展DataGridView的C#类:
public class DataGridViewTest : DataGridView
Run Code Online (Sandbox Code Playgroud)
此类以编程方式设置列数和行数.
我有一个Form应用程序,它创建一个DataGridViewTest实例并将其添加到GroupBox.
DataGridViewTest为列数和行数定义静态成员:
private static int NUM_COLUMNS = 2;
private static int NUM_ROWS = 2;
Run Code Online (Sandbox Code Playgroud)
以下是设置所有内容的代码:
public DataGridViewTest()
{
for (int i = 0; i < NUM_COLUMNS; i++)
{
DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
column.Name = "Column " + i.ToString();
this.Columns.Add(column);
}
for (int i = 0; i …Run Code Online (Sandbox Code Playgroud) 我有一个包含 100 个项目的对象,对于每个项目,我需要知道特定内容在该字段中出现的QuerySet次数。contract_numbercontract_number
预期输出示例:
[{'contract_number': 123, 'contract_count': 2}, {'contract_number': 456, 'contract_count': 1} ...]
Run Code Online (Sandbox Code Playgroud)
这意味着值 123 在整个contract_number字段中出现了 2 次。
重要的是:我无法减少项目的数量,因此分组在这里不起作用。
与此等效的 SQL 将是一个附加字段,contract_count如下所示:
SELECT *,
(SELECT count(contract_number) FROM table where t.contract_number = contract_number) as contract_count
FROM table as t
Run Code Online (Sandbox Code Playgroud)
问题是如何使用 Python 对象来做到这一点。经过一些研究,我发现对于更复杂的查询,应该使用Queryset 额外方法。以下是我的尝试之一,但结果不是我所期望的
queryset = Tracker.objects.extra(
select={
'contract_count': '''
SELECT COUNT(*)
FROM table
WHERE contract_number = %s
'''
},select_params=(F('contract_number'),),)
Run Code Online (Sandbox Code Playgroud)
我的models.py:
class Tracker(models.Model):
contract_number = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
编辑: 我的问题的解决方案是Subquery()