小编Chr*_*man的帖子

"i"在Python .pyi扩展名中表示什么?

在Python中,"i"在.pyi扩展名中表示什么?

PEP-484中,它提到.pyi是"存根文件",但没有关于扩展的助记符帮助.那么"我"的意思是"包括"吗?"实施"?"接口"?

python

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

Django的鼻子覆盖率vs manage.py测试给出了不同的CLI订单相关结果

我正在Django网站(此处提供代码)上运行简单的鼻子测试。根据发出CLI命令的顺序,我会得到截然不同的结果!

查看许多帖子,这似乎与覆盖过程开始于加载过程有关。我不明白的是:

  • 为什么两种方法之间的遗漏语句如此不同?
  • 如果我先运行一种方法,为什么覆盖范围会增加?

我正在专注于 minerals/views.py

Django settings.py文件包含配置信息:

# Use nose to run all tests
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'

# Nose will measure coverage on the folllowing apps
NOSE_ARGS = [
    '--with-coverage',
    '--cover-package=minerals',
    '--cover-html',
]
Run Code Online (Sandbox Code Playgroud)

我使用virtualenv需求文件在具有Python 3.5.1的Ubuntu 14.04LTS上运行:

coverage==4.1
Django==1.9.6
django-debug-toolbar==1.4
django-nose==1.4.3
nose==1.3.7
sqlparse==0.1.19
Run Code Online (Sandbox Code Playgroud)

运行测试方法1:

当我使用运行测试coverage run --source '.' manage.py test minerals,然后minerals/views.py缺少声明:12-13,18-49

$ coverage run --source '.' manage.py test minerals
nosetests minerals --with-coverage --cover-package=minerals --cover-html --verbosity=1
Creating test database for alias 'default'... …
Run Code Online (Sandbox Code Playgroud)

python django nose coverage.py django-nose

5
推荐指数
0
解决办法
452
查看次数

Django - clean_field()没有被调用管理员内联表单的更新

我无法弄清楚为什么没有为在管理视图上更新的内联表单调用clean_field()方法.我的代码似乎很简单(见下面的概要).

当我通过管理界面(http://admin/..../primary/1/)修改主表单时,如预期的那样,我看到:

  • Admin.PrimaryAdminForm.clean_myfield()调用
  • Admin.PrimaryAdminForm.clean()调用
  • Model.Primary.clean()调用

但是,当我在Membership(http://admin/..../membership/1/)的Admin视图中将内容修改为内联时,我只看到:

  • Model.Primary.clean()调用

我尝试在以下位置放置"def clean_myfield(self):"方法,但无法看到它从成员内联主要表单执行:

  • Model.Primary.clean_myfield
  • Admin.PrimaryAdmin.clean_myfield
  • Admin.PrimaryAdminForm.clean_myfield
  • Admin.PrimaryAdminInline.clean_myfield

还有其他地方应该放置这个clean_myfield代码吗?

我已经阅读(并重读)了[表格和字段验证] [docs.djangoproject.com/en/dev/ref/forms/validation/#form-and-field-validation]上的Django文档,它提供了很好的报道,但是内联验证没有任何内容.我还阅读了docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin,但对内联特定验证没有帮助.还有其他文件吗?

---> 奥斯丁回答提供了一个文档参考:"如果没有指定"(见他的链接),这意味着答案.我添加了一项改进此主题文档的请求.

经过进一步的实验,我通过在Model.Primary.clean()方法中放入代码找到了一种解决方法:

def clean(self):
    data = self.myfield
    data += "_extra" # not actual cleaning code 
    self.myfield = data
Run Code Online (Sandbox Code Playgroud)

所以问题仍然存在:为什么Model.clean()似乎是唯一放置管理内联表单验证而不是clean_myfield(self)方法的地方?

---> 奥斯丁回答.我需要添加form = PrimaryAdminForm到PrimaryInline.通过此添加,在成员资格表单上更新PrimaryInline myfield时,将调用PrimaryAdminForm.clean_myfield(self).由于添加了表单引用,代码排序已更新.

代码简介:

没有forms.py文件 - 所有模型都通过管理界面更新

models.py:

class Membership(models.Model):
    name = models.CharField( max_length=NAME_LENGTH,
        null=True, blank=True, verbose_name="Membership Name Tag",
        help_text="Name of membership" )

class Primary(models.Model):
    user = models.OneToOneField(User, verbose_name="User …
Run Code Online (Sandbox Code Playgroud)

django django-forms django-admin

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

如果使用 --no-commit、合并失败或中止,如何生成 git merge --log 消息?

我正在执行git merge两个分支中的一个,并想包括--log开关,但忘记了。我中止了提交消息编辑器以重试。

现在我处于 MERGE_HEAD 存在的情况,因此我无法重新运行合并,并且系统指示我“请在合并之前提交更改”。

当承诺完成合并时,我找不到创建与我从交换机收到的相同消息的选项merge --log

问:解决方案是删除.git/MERGE_HEAD然后再次合并,还是有某种组合git commitgit fmt-merge-msg会生成类似日志的消息?

我认为这可能是一个常见问题,但我无法通过 git-smc、Google 或 SO 找到解决方案。

git merge

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