小编djv*_*jvg的帖子

更新Matplotlib动画的轮廓

我正在寻找一种更新动画中轮廓线的方法,该方法不需要每次重新绘制图形。

我发现大多数对此问题的回答都让人回想起ax.contour,但是由于我的轮廓叠加在另一幅图像上,所以这太慢了。

我发现的唯一看起来很接近回答问题的答案是通过无效链接来回答:使用FuncAnimation在matplotlib中对轮廓图进行动画处理

编辑:可能是预期的链接。

示例代码:

#!/usr/bin/env python

import matplotlib.pylab as plt
import matplotlib.animation as anim
from matplotlib.colors import LinearSegmentedColormap as lsc
import numpy

#fig = 0; ax = 0; im = 0; co = 0


image_data = numpy.random.random((100,50,50))
contour_data = numpy.random.random((100,50,50))

def init():
    global fig, ax, im, co
    fig = plt.figure()
    ax = plt.axes()
    im = ax.imshow(image_data[0,:,:])
    co = ax.contour(contour_data[0,:,:])

def func(n):
    im.set_data(image_data[n,:,:])
    co.set_array(contour_data[n,:,:])

init()
ani = anim.FuncAnimation(fig, func, frames=100)
plt.show()
Run Code Online (Sandbox Code Playgroud)

干杯。

python matplotlib

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

Django:如何为表单集的empty_form设置初始值?

我只想知道如何将初始值设置为empty_form

我确实为额外表单创建了具有初始值的内联,没有问题,但是,当用户单击“添加”按钮时,我期望其初始值的字段显示为空,并且我希望它具有与额外表单相同的初始值。

我怎样才能让empty_form填充初始数据?

提前致谢。

django django-admin

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

如何使用 Django 的“with”模板标签保存比较结果?

我想在 django 模板中创建新变量,它将具有比较值

obj.site.profile.default_role == obj
Run Code Online (Sandbox Code Playgroud)

不幸的是,这些代码都不起作用:

{% with obj.site.profile.default_role==obj as default %}{% endwith %}

{% with default=obj.site.profile.default_role==obj %}{% endwith %}
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

python django django-templates

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

同时验证两个字段

我正在查看这段文档:

清理和验证相互依赖的字段

该文档解释了如何完成字段依赖,但我有一个稍微不同的问题:

假设我有一个包含两个字段的模型:

class MyModel(models.Model):
    field1 = models.CharField(max_length=200)
    field2 = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)

并说两个字段之一是隐藏的,所以模型表单看起来像这样:

class MyModelForm(forms.ModelForm):
    class Meta:
        ...

        widgets = {'field2': forms.HiddenImput()}
Run Code Online (Sandbox Code Playgroud)

现在,当用户填写表单时,我 (on clean_field1) 也填写field2. 现在,我想将发生的任何错误报告field2为关于field1. 这是因为此刻,用户不知道自己做错了什么!

我试图做的是,在 ModelForm 定义中:

def clean(self):
    cleaned_data = super(MyModelForm, self).clean()
    # Do something here
    return cleaned_data
Run Code Online (Sandbox Code Playgroud)

因为这是 Django 页面上显示的内容。但是,问题是clean方法执行的时候,字典self.errors是空的,不知道怎么办……

django django-models

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

从 django 管理操作中间页面重定向到更改表单页面

我正在尝试构建一个管理操作“download_selected”,它将下载选定的模型。选择该操作后,我会重定向到中间页面,以便用户可以选择下载格式。当用户选择下载格式并单击“下载”时,就会下载文件。但停留在同一个中间页面上。如何将其重定向回更改表单管理页面?我想要的这个重定向类似于 django“下载所选文件”默认管理操作。谢谢。

这是我的代码。

管理员.py

class SelectDownloadFormatForm(forms.Form):
    DOWNLOAD_TYPE_CHOICES=[('csv','csv'),
                           ('json', 'json'),
                           ('xml','xml')]

    _selected_action = forms.CharField(widget=forms.MultipleHiddenInput)
    download_type = forms.ChoiceField(label=_('Select a Download type'), choices=DOWNLOAD_TYPE_CHOICES, widget=forms.RadioSelect())


def download_selected(self, request, queryset):
    import csv
    from django.http import HttpResponse, HttpResponseRedirect
    import StringIO

    form = None

    if 'download' in request.POST:
        form = self.SelectDownloadFormatForm(request.POST)

        if form.is_valid():
            dtype = form.cleaned_data['download_type']
            print dtype
            response = HttpResponse(content_type='text/csv')
            response['Content-Disposition'] = 'attachment; filename="export.csv"'
            writer = csv.writer(response)
            writer.writerow(['id', 'name', 'qid' ,'label', 'name', 'field'])

            count = 0
            for s in queryset:
                questions_query = ParentModel.objects.filter(parent_form_id = …
Run Code Online (Sandbox Code Playgroud)

django django-admin django-admin-actions

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

使用 Django ORM (CROSS JOIN) 计算组合

我有三个相关的模型:Process,FactorLevel. AProcessFactors 存在多对多关系,aFactor将拥有一个或多个Levels。我正在尝试计算Level与 a 相关的s 的所有组合Process。这很容易用 Pythonitertools作为模型方法来实现,但执行速度有点慢,所以我试图弄清楚如何使用 Django ORM 在 SQL 中执行这个计算。

楷模:

class Process(models.Model):
    factors = models.ManyToManyField(Factor, blank = True)

class Factor(models.Model):
    ...

class Level(models.Model):
    factor = models.ForeignKey(Factor, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

示例:一个过程'Running'涉及三个Factors ( 'Distance', 'Climb', 'Surface'),每个s由多个Levels ( 'Long'/ 'Short', 'Flat'/ 'Hilly', 'Road'/ 'Mixed'/ 'Trail') 组成。计算 …

django django-orm django-queryset

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

有没有办法获取有关 QNetworkAccessManager 队列的信息?

来自Qt 4 文档

注意:QNetworkAccessManager将收到的请求排队。

现在,我希望能够做两件事(使用 PyQt):

  1. 检查“内部”队列中有多少请求QNetworkAccessManager等待发送。
  2. 检查有多少请求已收到答案(即计算已完成的 QNetworkReplies 的数量)。

我认为这些信息一定已经可供内部使用QNetworkAccessManager,但我还没有找到访问它的方法。我在 Qt 文档或其他地方找不到任何内容,但也许我找错了地方或使用了错误的术语。

有人可以告诉我 Qt 是否提供某种方式来访问有关QNetworkAccessManager队列的信息吗?

只是为了清楚起见:我可以想出几种方法来自己跟踪这些事情,例如通过检查各个 QNetworkReply 状态,但这不是我正在寻找的解决方案(仅作为最后的手段,如果 Qt 不提供更简单的方法)。

- - 编辑 - -

一个稍微比最小但仍然微不足道的例子来说明我想到的这种事情:

import sys
import json
from PyQt4 import QtNetwork, QtGui, QtCore

def show_reply_content(reply):
    print 'url from reply content: {}'.format(
        json.loads(str(reply.readAll()))['url'])

    # Quit if all replies are finished
    reply.deleteLater()
    reply.manager().replies_unfinished -= 1
    if not reply.manager().replies_unfinished:
    app.quit()

# Some initialization
app = QtGui.QApplication(sys.argv)
manager …
Run Code Online (Sandbox Code Playgroud)

queue qt pyqt pyside qnetworkaccessmanager

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

使用 anaconda python 在 Mac 上安装 AWS cli

我正在 Mac 上安装 aws cli。以前我安装了 anaconda 来控制我的 python 版本。所以我使用conda安装了python。现在我想安装 aws cli。

通过使用 pip: pip3 install awscli --upgrade --user

安装成功。但是,当我运行 aws --version 时,它告诉我找不到 aws 命令。

我再次尝试将它添加到命令行路径。但是我找不到它的安装位置。

当我运行 which python 它给了我 /anaconda/bin/python

人们说这可能不是真正的文件夹,确实我在它下面也找不到 aws cli。然后我运行 ls -al /anaconda/bin/python 它给 lrwxr-xr-x 1 mac staff 9 Aug 15 20:14 /anaconda/bin/python -> python3.6

我完全不明白路径。我怎么能找到我的 aws cli 的安装位置?

command-line-interface amazon-web-services

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

该查询集包含对外部查询的引用,并且只能在子查询中使用

型号ProductFilterproducts ManyToManyField. 我需要to_exportproduct.filters最高优先级(ProductFilter.priority字段)获取属性

我明白了这一点

filters = ProductFilter.objects.filter(
    products__in=[OuterRef('pk')]
).order_by('priority')

Product.objects.annotate(
    filter_to_export=Subquery(filters.values('to_export')[:1])
)
Run Code Online (Sandbox Code Playgroud)

但它提高了

ValueError:此查询集包含对外部查询的引用,并且只能在子查询中使用。

你知道为什么吗?

python sql django django-models django-queryset

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

使用选择器的非阻塞标准输入

玩弄非阻塞控制台输入,将 Pythonselectors与 结合使用sys.stdin,有一些我不明白的地方:

假设我想在用户按下 时退出循环Enter,可能是在先输入一些其他字符之后。

如果我执行阻塞读取,如下所示,该过程总是在\n遇到第一个换行符后完成,如预期的那样,无论前面有任何字符:

import sys

character = ''
while character != '\n':
    character = sys.stdin.read(1)
Run Code Online (Sandbox Code Playgroud)

现在考虑以下非阻塞读取的最小化示例:

import sys
import selectors

selector = selectors.DefaultSelector()
selector.register(fileobj=sys.stdin, events=selectors.EVENT_READ)

character = ''
while character != '\n':
    for key, __ in selector.select(timeout=0):
        character = key.fileobj.read(1)
Run Code Online (Sandbox Code Playgroud)

如果我Enter作为第一个输入点击,则会生成一个换行符,并且该过程按预期完成。

但是,如果我先输入一些其他字符,然后输入Enter,则该过程不会完成:我需要Enter再次点击才能完成。

显然,此实现仅在换行是第一个输入时才有效。

这可能有一个很好的理由,但我目前没有看到,也找不到任何相关问题。

这是否与我的非阻塞实现有关,还是stdin缓冲区的事情,或者可能与控制台或终端实现有关?

(我在 ubuntu 上从 python 3.8 shell 运行它。)

python select stdin

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