小编Cur*_*984的帖子

Django Rest框架,如何在ModelSerializer中包含'__all__'字段和相关字段?

我有两个模型,一个具有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__对于模型无效

有没有办法实现想要的行为?或者在使用相关名称时必须手动输入字段?

django django-models django-rest-framework

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

如何使用python的结构模式匹配来测试内置类型?

我正在尝试使用 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

我找到的大多数文档都讨论了如何测试某个变量是否是某个类型的实例。但不是如何测试类型是否属于某种类型。

关于如何使其发挥作用有什么想法吗?

python python-3.10 structural-pattern-matching

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

如何在 Pycharm 中完全重置 github 存储库?

我正在尝试完全删除并重新上传我的 GitHub 存储库。我正在使用 Pycharm 的 GitHub 集成,并且在我的一生中,我无法弄清楚如何让 Pycharm 忘记我曾经设置过 GitHub 存储库并从头开始。

我什至尝试将 .git 文件移动到另一个位置并清除 Pycharm 的缓存,但该死的东西仍然记得它有一个 Github 存储库设置,即使它实际上不再存在于 GitHub 上。

有人知道如何让 Pycharm 忘记吗?

git github pycharm

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

PRAW 6:获取所有提交的subreddit

我正在尝试使用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 reddit praw

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

在主脚本之外使用python multiprocess

根据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

5
推荐指数
1
解决办法
2694
查看次数

如何在 PyQt5 中正确异步加载图像?

我试图弄清楚如何在 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)

python qt pyqt pyqt5

5
推荐指数
1
解决办法
2294
查看次数

无法在 Windows 上的 PyQt 5 中导入 QtMultimedia

我正在尝试学习 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)

如果没有 …

python qt pyqt qml qtmultimedia

5
推荐指数
1
解决办法
3548
查看次数

PySide 如何在 python 控制台中查看 QML 错误?

我有以下代码:

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 是否可以实现类似的功能?

python qml pyside2

5
推荐指数
1
解决办法
2036
查看次数

Unity3d New Input System(2.8), 无法在编辑器中引用 Input Action

我刚刚将新的输入系统从 2.7 更新到 2.8。

新输入系统的工作原理是您通过转到 Create-> Input Actions 创建输入操作资产

输入动作.

这将创建一个资产,其中的操作可以映射到键。然后从这个资产创建一个 C# 脚本并在他们的代码中使用它。这就是我所做的。我调用了资产MyInput.inputactions,C# 脚本是MyInput.cs

资产和生成的 C# 类

当您以这种方式使用生成的 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 …

c# unity-game-engine

5
推荐指数
1
解决办法
7036
查看次数

React MUI,如何附加到砌体图像列表

我正在尝试将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)

javascript infinite-scroll reactjs material-ui

5
推荐指数
1
解决办法
1565
查看次数

Flutter 中如何知道应用程序何时加载?

在我的 flutter 应用程序中,我正在播放动画。我想仅在页面上的所有小部件加载后才开始播放。本质上,我正在寻找window.onloadflutter 中的 JS 等效项。现在,动画会尽快开始,结果是,当应用程序午餐时,我会在应用程序加载几秒钟时看到白屏,当应用程序最终加载时,动画已经播放了一半。

flutter 中是否有信号或事件让我知道应用程序已加载?

dart flutter

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

在 FastApi 中运行 Asyncio 子进程会导致 NotImplementedError

我试图在 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 python-asyncio fastapi

2
推荐指数
1
解决办法
5209
查看次数