小编Rod*_*Day的帖子

Django左外连接

我有一个网站,用户可以在其中查看电影列表,并为他们创建评论.

用户应该能够看到所有电影的列表.此外,如果他们审查了电影,他们应该能够看到他们给出的分数.如果没有,则仅显示没有得分的电影.

他们根本不关心其他用户提供的分数.

考虑以下 models.py

from django.contrib.auth.models import User
from django.db import models


class Topic(models.Model):
    name = models.TextField()

    def __str__(self):
        return self.name


class Record(models.Model):
    user = models.ForeignKey(User)
    topic = models.ForeignKey(Topic)
    value = models.TextField()

    class Meta:
        unique_together = ("user", "topic")
Run Code Online (Sandbox Code Playgroud)

我本质上想要的是这个

select * from bar_topic
left join (select topic_id as tid, value from bar_record where user_id = 1)
on tid = bar_topic.id
Run Code Online (Sandbox Code Playgroud)

考虑以下内容test.py:

from django.test import TestCase

from bar.models import *


from django.db.models import Q

class TestSuite(TestCase):

    def setUp(self): …
Run Code Online (Sandbox Code Playgroud)

python django orm django-models

23
推荐指数
6
解决办法
1万
查看次数

在PyQt中删除QTreeWidgetItem?

我发现找到一种删除我所选择的简单方法令人沮丧QTreeWidgetItem.

我的拼凑方法涉及将树的当前选择设置为current,然后:

if current.parent() is not None:
   current.parent().removeChild(current)
else:
   self.viewer.takeTopLevelItem(self.viewer.indexOfTopLevelItem(current))
Run Code Online (Sandbox Code Playgroud)

这并不可怕,但是没有一个命令可以直接删除该项目吗?

python pyqt qtreewidget

11
推荐指数
2
解决办法
7643
查看次数

在PyQt中拖动/移动QPushButton

我真的很难找到一种方法来做到这一点.假设我在窗口小部件窗口中非常简单地实现一个按钮:

self.button = QPushButton("Drag Me", self)
Run Code Online (Sandbox Code Playgroud)

我可以通过左右移动父控件区域的初始点self.button.move(x,y),我可以从中获取鼠标事件mousePressEvent(self, e)经过e.x()e.y(),使按钮移动到哪里我点击,但我似乎无法把所有这一切汇集成一个拖放框架.

澄清:在阅读了拖放的"真实"含义后,这不是我需要的.我只想用鼠标移动小部件,这与你在冰箱上移动磁铁的方式非常相似.

python pyqt pyqt4

8
推荐指数
1
解决办法
1万
查看次数

Python 字符串格式化:For 循环?

我真的很喜欢 Django/Jinja 风格的格式。我理解希望将逻辑和表示分开,但是在报告不断变化的数据量时,if 语句和 for 循环是理想的。

我正在创建一个“报告”类,它以更详细的方式返回有关函数输入和输出的一些信息,我想要的是一个字符串,如:

template="""
INPUTS:
{{% for key,value in inputsdict.items() %}}
  {{key}}: {{value}}
{{% endfor #}}

OUTPUTS:
{{% for key,value in outputsdict.items() %}}
  {{key}}: {{value}}
{{% endfor #}}
"""
Run Code Online (Sandbox Code Playgroud)

然后我可以称之为经典 template.format(**kwargs)

我想知道 Jinja 是否是我最好的选择,或者 python 是否具有某种我应该考虑的本机、轻量级字符串循环格式化功能。

编辑:此外,如果 Jinja 是我最好的选择,我将非常感谢如何在面向 Web 的环境之外使用它的示例。文档有点难以浏览。

python string jinja2

6
推荐指数
1
解决办法
6869
查看次数

Jinja有一个"中心"格式化选项,但"右对齐"怎么样?

说我有

{% for key,value in adict %}
{{key}}:{{value}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

如何确保填充所有键以使输出为

     something: 1
someotherthing: 3
  thelastthing: 2
Run Code Online (Sandbox Code Playgroud)

编辑:这不是我正在处理的网页,我只是获取打印的字符串输出.

python jinja2

6
推荐指数
2
解决办法
5064
查看次数

从PyQt小部件项设置和获取"数据"?

这不是一个问题,而是一个解释请求.我正在关注Mark Summerfield的"使用Python和Qt进行快速GUI编程",我一定错过了一些东西,因为我无法理解以下机制将我正在使用的真实"instance_item"链接在一起并且充满各种类型为方便起见,数据和"widget_item"在QTreeWidget模型中表示它.

设置:

widget_item.setData(0, Qt.UserRole, QVariant(long(id(instance_item))))
Run Code Online (Sandbox Code Playgroud)

入门

widget_item.data(0, Qt.UserRole).toLongLong()[0]
Run Code Online (Sandbox Code Playgroud)

东西似乎toLongLong()根本不是"Pythonic",为什么我们调用Qt.UserRole和QVariant?是"setData"和"data"函数是Qt框架的一部分还是更普通的Python命令?

python pyqt pyqt4

5
推荐指数
2
解决办法
6565
查看次数

使用 PyOpenGL 可视化 3D NumPy 数组

我想创建一个 PyOpenGL/QtOpenGL 小部件,它将允许我可视化任意 NumPy 3D 矩阵,与以下 Hinton 图设想为“立方体”而不是“正方形”不同:

不过,我在使用 OpenGL 时遇到了一些困难。到目前为止,这是我的代码:

from OpenGL.GL import *
from OpenGL.GLUT import *
from PyQt4 import QtGui, QtOpenGL
import numpy as np

action_keymap = {
  # 'a': lambda: glTranslate(-1, 0, 0),
  # 'd': lambda: glTranslate( 1, 0, 0),
  # 'w': lambda: glTranslate( 0, 1, 0),
  # 's': lambda: glTranslate( 0,-1, 0),

  'a': lambda: glRotate(-5, 0, 1, 0),
  'd': lambda: glRotate( 5, 0, 1, 0),
  # 'W': lambda: glRotate(-5, 1, 0, 0),
  # 'S': lambda: …
Run Code Online (Sandbox Code Playgroud)

python opengl numpy glsl pyopengl

5
推荐指数
2
解决办法
4329
查看次数

Python多处理,用于2D阵列的昂贵操作

我有一个功能,说它fun(a,b)非常昂贵,并返回一组数据.

我目前的方法如下:

a = np.linspace(0,100,300)
b = np.linspace(0,100,300)
A,B = np.meshgrid(a,b)
Y = np.zeros(A.shape)

for i,av in enumerate(a):
  for j, bv in enumerate(b):
    Y[i,j] = fun(av,bv)
Run Code Online (Sandbox Code Playgroud)

(排序,我不得不混淆一些东西以使其适合).无论如何,这个过程需要相当长的时间,我想知道是否有一种直接的方式来使用我的多核处理器来加快速度.

python multiprocessing

4
推荐指数
1
解决办法
2472
查看次数

从PIL到PySide QImage的更好方法?

我的应用程序加载图像并在其上打印一些文本.然后我想将打印的图像用作按钮图标上的标签.

问题是我无法将"Image"传递给QIcon或任何PyQt类.我发现了一种在线方法,建议将文件作为原始字符串发送到Qt的解析器中,并从中重建图像.

除了图像是蓝色外,它的效果非常好.在读完图像处理后,我学会了修复它,我需要移位和反转所有位,所以

        data = im.convert('RGBA').tostring()
    data = ''.join([''.join(i) for i in zip(data[2::4],data[1::4],data[0::4],data[3::4])])
    qim = QtGui.QImage(data, im.size[0], im.size[1],
                    QtGui.QImage.Format_ARGB32)
    pix = QtGui.QPixmap.fromImage(qim)
Run Code Online (Sandbox Code Playgroud)

我的小连接/拉链魔术似乎有些不合适,我不明白为什么有必要.有一个更好的方法吗?我知道在吐出RGBA并将其解析为ARGB时存在一个明显的问题,但我探索PIL和PyQt文档无济于事.

pyqt pyqt4 pyside python-imaging-library

3
推荐指数
1
解决办法
1605
查看次数