小编Sae*_*aeX的帖子

过滤查询集以获取空的相关集

我想得到一个QuerySet(用于提供ModelChoiceField),列出相关集上具有空ForeignKey的所有对象.

我模型的示例摘录:

class Bankcard(models.Model):
    name = models.CharField(max_length=128)
    number = models.IntegerField()
    ...

class Person(models.Model):
    bankcard = models.ForeignKey(Bankcard, blank=True, null=True)
    first_name = models.CharField(max_length=64)
    last_name = models.CharField(max_length=64)
    ...
Run Code Online (Sandbox Code Playgroud)

在表格中,我想列出尚未与某人挂钩的所有银行卡.

我尝试的是将自己的过滤作为列表的一部分:

bankcards = Bankcard.objects.all()
unbound_cards = []
for card in bankcards:
    if len(card.person_set.all()) == 0:
        unbound_cards.append(card)
Run Code Online (Sandbox Code Playgroud)

...但是这不起作用,因为我需要向ModelChoiceField提供QuerySet而不是列表而我得到'list' object has no attribute 'all'.

所以我尝试直接在相关集上过滤:

unbound_cards = Bankcard.objects.filter(person_set__isnull = True)
Run Code Online (Sandbox Code Playgroud)

这也不起作用: django.core.exceptions.FieldError: Cannot resolve keyword 'person_set' into field. Choices are: ...

任何的想法?

django django-forms

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

使用 PIL 缓冲到图像

我从包含图像的某处接收缓冲区(image_data如下),我想从该缓冲区生成缩略图。

我正在考虑使用 PIL(好吧,枕头),但没有成功。这是我尝试过的:

>>> image_data
<read-only buffer for 0x03771070, size 3849, offset 0 at 0x0376A900>
>>> im = Image.open(image_data)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "<path>\PIL\Image.py", line 2097, in open
    prefix = fp.read(16)
AttributeError: 'buffer' object has no attribute 'read'
>>> image_data.thumbnail(50, 50)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'buffer' object has no attribute 'thumbnail'
>>>
Run Code Online (Sandbox Code Playgroud)

我确信有一种简单的方法可以解决这个问题,但我不确定如何解决。

python pillow

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

将字符串转换为没有时间信息的日期对象

我想将字符串转换为Python日期对象。d = datetime.strptime("25-01-1973", "%d-%m-%Y")根据https://docs.python.org/2/library/datetime.html上的文档,我正在使用,并且产生datetime.datetime(1973, 1, 25, 0, 0)

当我使用时d.isoformat(),我得到了'1973-01-25T00:00:00',但是我想1973-01-25根据文档获得(没有时间信息):

date.isoformat()
Return a string representing the date in ISO 8601 format, ‘YYYY-MM-DD’. For example, date(2002, 12, 4).isoformat() == '2002-12-04'.
Run Code Online (Sandbox Code Playgroud)

据了解,我可以使用SimpleDateFormat等,但是由于该isoformat()示例在文档中已明确提及,因此我不确定为什么在日期之后会得到不需要的时间信息。

我想我在某处缺少细节?

python

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

如何克隆包括数据在内的scikit-learn估算器?

我正在尝试对朴素贝叶斯估计量进行部分拟合,但也要在部分拟合前保留估计量的副本。sklearn.base.clone仅克隆一个估计器参数,而不是它的数据,因此在这种情况下没有用。由于克隆实际上是空的,因此对克隆执行部分拟合仅使用在部分拟合期间添加的数据。

from sklearn.naive_bayes import MultinomialNB

model = MultinomialNB()
fit_model = model.fit(np.array(X),np.array(y))
fit_model2 = model.partial_fit = (np.array(Z),np.array(w)),np.unique(y))
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,fit_model和fit_model2将是相同的,因为它们都指向同一对象。我想保留原始副本不变。我的解决方法是腌制原始文件并将其加载到新对象中以进行部分拟合。像这样:

model = MultinomialNB()
fit_model = model.fit(np.array(X),np.array(y))

import pickle
with open('saved_model', 'wb') as f:
    pickle.dump([model], f)

with open('saved_model', 'rb') as f:
    [model2] = pickle.load(f) 

fit_model2 = model2.partial_fit(np.array(Z),np.array(w)),np.unique(y))
Run Code Online (Sandbox Code Playgroud)

另外,我每次都可以完全适应新数据,但是由于我需要执行数千次,因此我试图找到更有效的方法。

python python-3.x scikit-learn

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

两个字段之间的Timedelta

我正在寻找两个字段之间的timedelta大于特定天数的对象.

在圣诞节,我有一个发送信件的日期,以及收到批准的日期.如果在30天内没有收到批准,那么这些对象应该包含在查询集中.

我可以做类似下面的事情,其中​​delta是静态的.但是我不需要datetime.date.today()作为开始,但需要与其他对象进行比较.

delta = datetime.date.today() - datetime.timedelta(30)
return qs.filter(letter_sent__isnull=False)\
    .filter(approval_from__isnull=True)\
    .filter(letter_sent__gte=delta)
Run Code Online (Sandbox Code Playgroud)

任何指针如何做到这一点?

django django-orm

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

检查 Django 模板中的小部件属性

我需要将一些数据从手动生成的表单传递到模板,并且需要检查该信息是否存在。

我正在生成这样的表单(在该__init__部分中):

for i in days_in_month:
    self.fields["info_%s" % i] = forms.ChoiceField(label="%s" % i.strftime("%a %d-%m-%Y"), 
    required=False, 
    choices=Information._meta.get_field('info').choices, 
    widget=forms.Select(attrs={'something': 'test'}))
Run Code Online (Sandbox Code Playgroud)

我想做的是在模板中检查该属性是否something已设置,如果是,则显示其值(在上面的示例中:)test

任何想法?

我尝试{{ field.attribute }}按照模板化 Django 中的 Access 表单字段属性和以下内容进行操作:

{% for field in form %}
    {{ field.label_tag }} {{ field }}
    {{ field.widget.attrs.something }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

...但这不起作用( invalid)。

最终我想做类似的事情:

{% if field.widget.attrs.something %}{{ field.widget.attrs.something }}{% endif %}
Run Code Online (Sandbox Code Playgroud)

django django-templates

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

Perl 抛出“无法在 @INC 中找到 Config/YAML.pm”

Can't locate Config/YAML.pm in @INC (you may need to install the Config::YAML module)在运行 perl 脚本时遇到了问题。

在@INC 中找不到 Config/YAML.pm(您可能需要安装 Config::YAML 模块)(@INC 包含:/etc/perl /usr/local/lib/perl/5.18.2 /usr/local /share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) 在 myperlscript 第 8 行. BEGIN 失败——编译在 myperlscript 第 8 行中止。

脚本的第 8 行显示use Config::YAML;. 我正在使用 Ubuntu 并安装了libdata-yaml-perllibyaml-perl软件包,但仍然遇到相同的错误。还需要什么?

ubuntu perl apt

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

使用动态form_class的Updateview

我想动态改变form_class一个的UpdateViewCBV在Django 1.6.

我试图使用get_context_data()来做这件事,但由于表单已经初始化,这没有用.所以它需要发生在__init__我猜中.这是我尝试过的__init__:

class UpdatePersonView(generic.UpdateView):

    model = Person
    form_class = ""

    def __init__(self, *args, **kwargs):
        super(UpdatePersonView, self).__init__(*args, **kwargs)
        person = Person.objects.get(id=self.get_object().id)
        if not person.somefield:
            self.form_class = OneFormClass
        elif person.somefield:
            self.form_class = SomeOtherFormClass
Run Code Online (Sandbox Code Playgroud)

'UpdatePersonView' object has no attribute 'kwargs'执行时我遇到了错误信息person = Person.objects.get(id=self.get_object().id).

手动指定id(例如id=9)时,设置有效.

如何在我覆盖的init方法中获取args/kwargs ?特别是我需要访问pk.

python django django-views

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

Django CONN_MAX_AGE设置错误

我正unsupported operand type(s) for +: 'float' and 'str'试图CONN_MAX_AGE在Django 1.6中设置.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', 
        'NAME': 'myDB',
        'USER': 'myuser',
        'PASSWORD': 'mypass',
        'HOST': '',
        'CONN_MAX_AGE': '60',  # seconds for persistent connection, since Django 1.6
        'PORT': '5432',
    }
}
Run Code Online (Sandbox Code Playgroud)

python django

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

避免makemigrations重新创建日期字段

使用Django 1.7,每当我执行一个时makemigrations,我都会对我的一个模型进行更改:

(venv) >> python manage.py makemigrations myapp

Migrations for 'myapp':
  0005_auto_20141206_1129.py:
    - Alter field date on observation
Run Code Online (Sandbox Code Playgroud)

这是由于我的Observation类使用datetime.today():

class Observation(model.Models):
    date = models.DateField(default=datetime.datetime.today())
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以避免为此创建迁移文件,但同时保持today()创建观察时的默认值?

django django-models

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