我有两个模型,一个具有M2M关系和相关名称.我想在序列化程序和相关字段中包含所有字段.
models.py:
class Pizza(models.Model):
name = models.CharField(max_length=50, unique=True)
toppings = models.ManyToManyField(Topping, null=True, blank=True, related_name='pizzas')
class Topping(models.Model):
name = models.CharField(max_length=50, unique=True)
price = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)
serializer.py:
class ToppingSerializer(serializers.ModelSerializer):
class Meta:
model = Topping
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
这有效,但不包括相关字段.
fields = ['name', 'price', 'pizzas']
Run Code Online (Sandbox Code Playgroud)
这完全符合我的要求,但当Toppings模型有很多字段时会发生什么.我想做的事情如下:
fields = ['__all__', 'pizzas']
Run Code Online (Sandbox Code Playgroud)
此语法导致错误说:
字段名称
__all__对于模型无效
有没有办法实现想要的行为?或者在使用相关名称时必须手动输入字段?
我正在尝试使用 SPM 来确定某种类型是intan 还是str.
下面的代码:
from typing import Type
def main(type_to_match: Type):
match type_to_match:
case str():
print("This is a String")
case int():
print("This is an Int")
case _:
print("\nhttps://en.meming.world/images/en/0/03/I%27ve_Never_Met_This_Man_In_My_Life.jpg")
if __name__ == "__main__":
test_type = str
main(test_type)
Run Code Online (Sandbox Code Playgroud)
返回https://en.meming.world/images/en/0/03/I%27ve_Never_Met_This_Man_In_My_Life.jpg
我找到的大多数文档都讨论了如何测试某个变量是否是某个类型的实例。但不是如何测试类型是否属于某种类型。
关于如何使其发挥作用有什么想法吗?
我正在尝试完全删除并重新上传我的 GitHub 存储库。我正在使用 Pycharm 的 GitHub 集成,并且在我的一生中,我无法弄清楚如何让 Pycharm 忘记我曾经设置过 GitHub 存储库并从头开始。
我什至尝试将 .git 文件移动到另一个位置并清除 Pycharm 的缓存,但该死的东西仍然记得它有一个 Github 存储库设置,即使它实际上不再存在于 GitHub 上。
有人知道如何让 Pycharm 忘记吗?
我正在尝试使用PRAW从最新到最旧的迭代某个subreddit的提交。我曾经这样做:
subreddit = reddit.subreddit('LandscapePhotography')
for submission in subreddit.submissions(None, time.time()):
print("Submission Title: {}".format(submission.title))
Run Code Online (Sandbox Code Playgroud)
但是,当我现在尝试执行此操作时,出现以下错误:
AttributeError: 'Subreddit' object has no attribute 'submissions'
通过查看文档,我似乎无法弄清楚该如何做。我能做的最好的事情是:
for submission in subreddit.new(limit=None):
print("Submission Title: {}".format(submission.title))
Run Code Online (Sandbox Code Playgroud)
但是,这仅限于前1000个提交。
有没有办法处理所有提交的内容,而不仅仅是前1000个?
根据python多进程的文档,进程的产生需要在if __name__ == '__main__':子句中,以防止产生无限的进程。
我的问题是,可以在导入中使用多进程吗?
类似于以下内容:假设我有这个py,它是主要执行的文件:
import foo
def main():
foo.run_multiprocess()
if __name__ =='__main__':
main()
Run Code Online (Sandbox Code Playgroud)
和导入的foo.py文件:
def run_multiprocess(number_to_check):
if number_to_check == 5:
print(number_to_check)
if __name__ == '__main__':
list_to_check = {1,2,3,4,5,6,7}
pool = Pool(processes=4)
pool.map(process_image, list_to_check)
Run Code Online (Sandbox Code Playgroud)
显然这是行不通的,因为foo.py中if语句中的代码将无法运行。有办法使它工作吗?
python python-multithreading python-3.x python-multiprocessing
我试图弄清楚如何在 PyQt Qlistview 中正确完成异步图像加载。
我的主要小部件由一个Qlistview和一个QLineEdit文本框组成。我有一个演员数据库,我使用QAbstractListModel在文本框中输入文本时的子类查询该数据库,并查询数据库并使用结果填充模型。结果随后显示在 Qlistview 中。(每个演员的结果包含演员姓名和图像路径。)
当结果集太大(大于 50)时,问题就开始了,从磁盘加载图像会造成损失并挂起 UI。我希望实现的行为是最初为所有结果加载一个占位符图像,然后在不同的线程中从磁盘加载特定图像,并在加载时使用新加载的图像更新 Qlistview 项目。
为此,我创建了一个自定义QItemDelegate类,其中包含需要加载的所有图像的缓存。如果图像不在缓存中,则它绘制占位符图像并向另一个线程发送信号,该线程加载该图像并将其放入缓存中。
我的委托类:
class MyDelegate(QStyledItemDelegate):
t1 = pyqtSignal(str, str, dict)
def __init__(self, image_cache, loader_thread, parent=None):
super(MyDelegate, self).__init__(parent)
self.placeholder_image = QPixmap(PLACEHOLDER_IMAGE_PATH).scaled(200, 300)
self.image_cache = image_cache
self.loader_thread = loader_thread
self.t1.connect(self.loader_thread.insert_into_queue)
def paint(self, QPainter, QStyleOptionViewItem, QModelIndex):
rect = QStyleOptionViewItem.rect
actor_name = QModelIndex.data(Qt.DisplayRole)
actor_thumb = QModelIndex.data(Qt.UserRole)
pic_rect = QRect(rect.left(), rect.top(), 200, 300)
text_rect = QRect(rect.left(), rect.top() + 300, 200, 20)
try:
cached_thumb …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习 PyQt5 + qml,到目前为止我尝试过的一切都很好,但是在尝试将 QtMultimedia 导入我的 qml 文件时遇到了一个障碍,导致以下错误:
无法为模块“QtMultimedia”加载插件:无法加载库 D:\py35venvQt\lib\site-packages\PyQt5\Qt\qml\QtMultimedia\declarative_multimedia.dll:找不到指定的模块。
主.qml:
import QtQuick 2.8
import QtQuick.Window 2.2
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.1
import QtMultimedia 5.6
Window {
id: root
visible: true
title: 'my pyqt app'
width: 1280
height: 720
}
Run Code Online (Sandbox Code Playgroud)
主文件
if __name__ == '__main__':
def handleStatusChange(status):
if status == QQuickView.Error:
errors = appLabel.errors()
if errors:
print (errors[0].description())
myApp = QApplication(sys.argv)
appLabel = QQuickView()
appLabel.statusChanged.connect(handleStatusChange)
model = models.ActorModel(DB_PATH)
ctxt = appLabel.rootContext()
ctxt.setContextProperty('myModel', model)
appLabel.setSource(QUrl('./qml/main/main.qml'))
try:
sys.exit(myApp.exec_())
except:
print("Exiting")
Run Code Online (Sandbox Code Playgroud)
如果没有 …
我有以下代码:
if __name__ == '__main__':
os.environ["QT_QUICK_CONTROLS_STYLE"] = "Material"
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load('./QML/main.qml')
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,如果“engine.load”失败,我只会看到“-1”退出代码,而不会详细说明失败的原因以及发生的错误。如何在 python 控制台中打印 QML 错误?
QQuickView当使用而不是 QQmlApplicationEngine时,有一个解决方法,并在这篇文章中进行了描述,但是,我想知道 QQmlApplicationEngine 是否可以实现类似的功能?
我刚刚将新的输入系统从 2.7 更新到 2.8。
新输入系统的工作原理是您通过转到 Create-> Input Actions 创建输入操作资产
这将创建一个资产,其中的操作可以映射到键。然后从这个资产创建一个 C# 脚本并在他们的代码中使用它。这就是我所做的。我调用了资产MyInput.inputactions,C# 脚本是MyInput.cs
当您以这种方式使用生成的 C# 脚本时,您需要在脚本中引用资产。但是,更新后,似乎无法从编辑器中做到这一点。当我在类中定义一个公共 MyInput变量时,如下所示:
public class ShapeMover: MonoBehaviour
{
public MyInput controls;
private float _lastFallTime;
private float _fallSpeed;
private ShapeSpawner _spawn;
private GameObject _shapeToMove;
private Transform _shapeToMoveTransform;
private bool _isGameOver;
private const float _leftRotationAngle = (float) -1.57079633;
private const float _rightRotationAngle = (float) 1.57079633;
}
Run Code Online (Sandbox Code Playgroud)
它没有在检查器中暴露:
NullReferenceException当我尝试访问controls变量时,我得到一个明显的错误。
难道我做错了什么?
如何从检查员处引用资产?我曾尝试添加 [SerializeField]到公共声明中,但没有帮助。
我一直在关注这个视频,它运行良好,直到我更新到更新的输入系统版本。
作为参考,这是完整的 ShapeMover …
我正在尝试将React MUI Masonry Image List组件与无限滚动组件一起使用。他们看起来合作得很好。
但是,我遇到的问题是附加到砌体图像列表。我成功附加了新图像,但加载新图像时整个砌体会跳跃并变得紧张。
我想知道是否可以只将图像添加到页面底部而不会使整个内容变得混乱。
这是说明这一点的代码,基本上我只是修改了 Masonry 图像列表演示:
import * as React from 'react';
import Box from '@mui/material/Box';
import ImageList from '@mui/material/ImageList';
import ImageListItem from '@mui/material/ImageListItem';
import InfiniteScroll from "react-infinite-scroll-component";
import { useEffect, useState } from "react";
export default function MasonryImageList() {
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
const [items, setItems] = useState([]);
const fetchMore = async (itemData) =>{
await sleep(2000)
setItems(prev_items => [...prev_items,...itemData])
}
useEffect(() => {
fetchMore(itemData);
}, []); …Run Code Online (Sandbox Code Playgroud) 在我的 flutter 应用程序中,我正在播放动画。我想仅在页面上的所有小部件加载后才开始播放。本质上,我正在寻找window.onloadflutter 中的 JS 等效项。现在,动画会尽快开始,结果是,当应用程序午餐时,我会在应用程序加载几秒钟时看到白屏,当应用程序最终加载时,动画已经播放了一半。
flutter 中是否有信号或事件让我知道应用程序已加载?
我试图在 FastApi 路由中运行子进程,但执行结果为NotImplementedError. 我读过有关该问题的类似问题:
为什么我在 Windows 上使用 async 和 wait 时会收到 NotImplementedError 错误?
Asyncio.create_subprocess_exec NotImplementedError - Fastapi 后台任务
但他们似乎没有任何可行的解决方案。
我的 FastApi 路线如下所示:
@app.get("/test/subprocess")
async def subprocess_test():
parsed_json = await(probe_video_file(Path(r"G:\ffmpeg testing\ffmpeg\ffprobe.exe"),
Path(r"G:\ffmpeg testing\input_file\test_file.wmv")))
print(parsed_json)
return parsed_json
Run Code Online (Sandbox Code Playgroud)
当我导航到此路径时,会引发异常并且代码崩溃。该probe_video_file函数内部有一个子进程调用,如下所示:
async def probe_video_file(ffprobe_path: Path, file_to_probe: Path) -> dict:
"""
Probes a video file with FFprobe.
:param ffprobe_path: Path to ffprobe executable
:param file_to_probe: Path to file to probe
:returns Parsed JSON dict of the output
"""
args = …Run Code Online (Sandbox Code Playgroud) python ×7
pyqt ×2
qml ×2
qt ×2
c# ×1
dart ×1
django ×1
fastapi ×1
flutter ×1
git ×1
github ×1
javascript ×1
material-ui ×1
praw ×1
pycharm ×1
pyqt5 ×1
pyside2 ×1
python-3.10 ×1
python-3.x ×1
qtmultimedia ×1
reactjs ×1
reddit ×1