我有一个网站,用户可以在其中查看电影列表,并为他们创建评论.
用户应该能够看到所有电影的列表.此外,如果他们审查了电影,他们应该能够看到他们给出的分数.如果没有,则仅显示没有得分的电影.
他们根本不关心其他用户提供的分数.
考虑以下 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) 我发现找到一种删除我所选择的简单方法令人沮丧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)
这并不可怕,但是没有一个命令可以直接删除该项目吗?
我真的很难找到一种方法来做到这一点.假设我在窗口小部件窗口中非常简单地实现一个按钮:
self.button = QPushButton("Drag Me", self)
Run Code Online (Sandbox Code Playgroud)
我可以通过左右移动父控件区域的初始点self.button.move(x,y),我可以从中获取鼠标事件mousePressEvent(self, e)经过e.x()和e.y(),使按钮移动到哪里我点击,但我似乎无法把所有这一切汇集成一个拖放框架.
澄清:在阅读了拖放的"真实"含义后,这不是我需要的.我只想用鼠标移动小部件,这与你在冰箱上移动磁铁的方式非常相似.
我真的很喜欢 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 的环境之外使用它的示例。文档有点难以浏览。
说我有
{% 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)
编辑:这不是我正在处理的网页,我只是获取打印的字符串输出.
这不是一个问题,而是一个解释请求.我正在关注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命令?
我想创建一个 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) 我有一个功能,说它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)
(排序,我不得不混淆一些东西以使其适合).无论如何,这个过程需要相当长的时间,我想知道是否有一种直接的方式来使用我的多核处理器来加快速度.
我的应用程序加载图像并在其上打印一些文本.然后我想将打印的图像用作按钮图标上的标签.
问题是我无法将"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文档无济于事.