我得到了简单的要求(不是简单的实现),并且在没有对db进行多次命中的情况下确定如何实现它,并且没有.extra()在queryset中.
Task:
name = xxx
status = models.IntegerField(choices=some_choices)
project = ForeignKey(Project)
Project:
name = xxx
code = xxx
Run Code Online (Sandbox Code Playgroud)
项目包含具有各种状态的任务.(假设status = 3已完成)现在,我想列出所有项目的总任务和已完成的任务,如下所示
我能够使用注释获得total_tasks,但不能获得completed_tasks,因为它需要注释中的条件.无论如何要做到这一点?
我有以下我的实体结构:
@MappedSuperclass
public abstract class BaseEntity {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seqGenerator")
private Long id;
}
@MappedSuperclass
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@SequenceGenerator(name = "seqGenerator", sequenceName = "DICTIONARY_SEQ")
public abstract class Intermed extends BaseEntity {}
@Entity
public class MyEntity1 extends Intermed {}
@Entity
public class MyEntity2 extends Intermed {}
Run Code Online (Sandbox Code Playgroud)
我得到以下例外:
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'sessionFactory' defined in class path resource [context/applicationContext.xml]:
Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Unknown Id.generator: seqGenerator
Run Code Online (Sandbox Code Playgroud)
当我在Intermed类上将@MappedSuperclass更改为@Entity时,一切正常.使用@MappedSuperclass和@SequenceGenerator有什么问题吗?或者我错过了什么?
有没有办法使用MySQL Workbench连接到Postgres数据库?我希望它可以很容易,但没有找到任何可用的插件.
我正在尝试在运行时创建按钮。我的问题是我应该如何在运行时模式下向每个按钮添加一个事件?
例如:
Button btn;
int i =0;
int j =0;
List<Button> listBTN = new List<Button>();
private void button1_Click(object sender, EventArgs e)
{
btn = new Button();
btn.Location = new Point(60 + i, 90);
btn.Size = new Size(50, 50);
btn.Name = "BTN";
listBTN.Add(btn);
i = i + 50;
foreach(Button b in listBTN){
this.Controls.AddRange(new Button[] {b});
}
}
Run Code Online (Sandbox Code Playgroud)

我找不到在QTabWidget中设置文本对齐方式.
在我创建了这个小部件的实例之后,我将其tabPosition属性设置为West,但我希望它在水平方向上显示文本/标签.我已经看了Qt的样式表,但正如你所看到的,text-align属性只能在QPushButton和QProgressBar上设置.
我已经在网上搜索了,但我刚发现了一个bug报告,一个未回答的问题,最后是一个建议重新实现paint()方法的用户.也许我会解决,但我使用Python(PyQt或PySide),我不知道该怎么做.
你能帮助我吗?
编辑:感谢Teukamm,我写了一些代码:
from PyQt4 import QtGui, QtCore
class HorizontalTabWidget(QtGui.QTabBar):
def paintEvent(self, event):
for index in range(self.count()):
painter = QtGui.QPainter()
painter.begin(self)
painter.setPen(QtCore.Qt.blue);
painter.setFont(QtGui.QFont("Arial", 10));
tabRect = self.tabRect(index)
painter.drawText(tabRect, QtCore.Qt.AlignVCenter | QtCore.Qt.TextDontClip, self.tabText(index));
painter.end()
def sizeHint(self):
return QtCore.QSize(60, 130)
import sys
app = QtGui.QApplication(sys.argv)
tabs = QtGui.QTabWidget()
tabs.setTabBar(HorizontalTabWidget())
widget1 = QtGui.QWidget()
widget2 = QtGui.QWidget()
tabs.addTab(widget1, "Widget1")
tabs.addTab(widget2, "Widget2")
tabs.setTabPosition(2)
tabs.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
最后我的文本按照我的预期对齐,但我有一点(大?)问题:当你点击每个标签按钮的右侧时,它不会发送currentChanged SIGNAL.我还尝试在paintEvent中扩展每个tabRect的宽度,但它不起作用.我应该改变什么?
谢谢 :) …
在VIM中我打开了4个窗口和一个像这样的NERD树:
因此,每当我尝试从NERD打开文件时,它都会在第一个缓冲区(topleft pos)中打开.有时在其他缓冲区.有没有办法打开右下角的文件?Mb有解决方法吗?也许我可以强制NERDtree在最后一个活动窗口中打开文件?目前,这种方式不起作用:(
UPD:看起来问题出在隐藏缓冲区中.缓冲区在一个窗口中打开,然后由另一个窗口替换 - 如果您尝试在另一个窗口中打开第一个缓冲区,您将在第一次打开它的窗口中打开它.
我开始使用umbraco 4.5.2.
我已经启动并运行了我的站点,并且我正在使用一些ASP.NET控件来设计模板.我如何回应这些控件的事件?
例如,我在模板中添加了一个Button.如何在编辑按钮时编辑代码隐藏文件以执行某些操作?
谢谢,
马丁威比
我正在尝试在silverlight中围绕圆柱体包裹图像.我在谷歌看了很多,但没有找到任何东西.据我所知,它可以用像素着色器完成,但不知道如何.
可能吗?
谢谢.
我有值在值之间浮动的整数:4000000000-4294967000(对于4字节无符号整数int,它小于int max)
我想将其保存到文件,然后重新读取值
$f = fopen($fileName, 'wb'); fwrite($f, pack('I', $value));
Run Code Online (Sandbox Code Playgroud)
重要的是,在文件中,值必须是精确的4字节无符号整数,因为外部设备会期望数据格式.但PHP将大值存储为float,并销毁二进制表示.
我怎么能用那种格式写那些数字?
[编辑] @FractalizeR thx这项工作我有:
protected static function handleUint($direction, $value)
{
if($direction == 'encode')
{
$first2bytes = intval($value / (256 * 256));
$second2bytes = intval($value - $first2bytes);
return pack('n2', $first2bytes, $second2bytes);
}
else
{
$arr = unpack('n2ints', $value);
$value = $arr['ints1'] * (256 * 256) + intval($arr['ints2']) - 1;
return $value;
}
}
Run Code Online (Sandbox Code Playgroud)
但我不太明白,为什么我必须-1返回值,这个二进制文件将生成正确吗?
可能重复:
与float文字的float比较中的奇怪输出
#include<stdio.h>
int main()
{
float me = 1.7;
if(me==1.7)
printf("C");
else
printf("C++");
}
Output: C++
Run Code Online (Sandbox Code Playgroud)
现在说这种行为的原因是许多浮点数不能用二进制的绝对精度表示.
我的问题是 - 如果计算机以二进制形式思考和操纵.代表性的任何不确定性在比较时me都是相同的1.7.所以两者都应该是平等的.
那么类型转换如何解决这个问题呢? (float)1.7