小编Avr*_*ril的帖子

当前版本的分支的GitHub比较视图

有没有办法使用GitHub的"比较视图"来查看两个分支的当前版本之间的差异?(也就是说,要查看相同的差异,如果你这样做了git diff <a-branch> <another-branch>.)

在这里做了一个小例子.有两个分支:"主"和"其他分支".如果我这样做git diff master..other-branch,这就是差异:

diff --git a/README.md b/README.md
index 495cc9f..3d2c3a0 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
 Hello there!
+
+This is a commit to the "other-branch" branch.
Run Code Online (Sandbox Code Playgroud)

您可以从该差异中看到"主"分支和"其他分支"分支之间的差异是添加了一个空行和一行文本,并且没有删除.

但是,如果我尝试使用GitHub比较视图(https://github.com/akenney/compare-view-test/compare/other-branchhttps://github.com/akenney/compare-view-test/compare /master...other-branch),它显示了这个差异:

-This is a commit to the master branch.
+Hello there!
+
+This is a commit to the "other-branch" branch.
Run Code Online (Sandbox Code Playgroud)

它将"other-branch"分支与旧版本的"master"分支进行比较,而不是与当前版本进行比较.即使我指定要比较的特定提交(https://github.com/akenney/compare-view-test/compare/8ed0d53...e4470ec),它也会发生同样的事情- 它所显示的差异并不是那些差异两个提交.

git branch github

16
推荐指数
1
解决办法
8225
查看次数

Django REST框架:SlugRelatedField用于间接相关属性?

我有一个与Django的User模型有一对一关系的Profile模型,我有另一个模型,称为Permission(与Django的内部权限概念无关),它具有Profile的外键.像这样:(为了简单起见,我在这里删除了大部分字段)

from django.db import models
from django.contrib.auth.models import User as DjangoUser

class Account(models.Model):
    name = models.CharField(max_length=200, db_index=True)

class Profile(models.Model):
    django_user = models.OneToOneField(DjangoUser)
    default_account = models.ForeignKey(Account)

class Permission(models.Model):
    # Which user has the permission
    user = models.ForeignKey(Profile, db_index=True)
    # Which account they have the permission on
    account = models.ForeignKey(Account, db_index=True)
Run Code Online (Sandbox Code Playgroud)

我想为Permission创建一个序列化器,它将创建如下对象:

{
  "user": "me@example.com",
  "account": 123
}
Run Code Online (Sandbox Code Playgroud)

其中"account"的值是帐户的主键(这样很简单,我可以使用PrimaryKeyRelatedField),"user"的值是用户的电子邮件地址(这是我尚未想到的部分,因为电子邮件地址不直接存储在Profile对象上,它位于关联的DjangoUser对象上.另请注意,这不是只读的 - 在创建权限时,它需要能够从电子邮件地址反序列化为Profile对象.

到目前为止我尝试过的一些事情,用于在Permission序列化器上表示用户...

1.

user = serializers.RelatedField(read_only=False)
Run Code Online (Sandbox Code Playgroud)

有了这个,如果我将电子邮件地址(或主键或其他任何内容)作为"用户"发布,它会返回400错误,说{"user": "This field is required."}好像我根本没有包含该字段.

2.

user = serializers.SlugRelatedField(slug_field='django_user.email')
Run Code Online (Sandbox Code Playgroud)

有了这个,我明白了AttributeError: 'Profile' object has …

python django serialization django-rest-framework

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

IPython:关闭%timeit消息"这可能意味着正在缓存中间结果"

自从升级到IPython版本3(我有3.1.0)以来,每次使用该%timeit命令时,它都会打印出"最慢的运行时间比最快的时间长[数倍].这可能意味着在打印之前正在缓存中间结果"时间结果.即使是非常简单的操作也会发生这种 例如:

In [4]: x = 5

In [5]: %timeit x
The slowest run took 53.99 times longer than the fastest. This could mean that an intermediate result is being cached 
100000000 loops, best of 3: 19.8 ns per loop
Run Code Online (Sandbox Code Playgroud)

和:

In [17]: %timeit 22 + 1
The slowest run took 106.15 times longer than the fastest. This could mean that an intermediate result is being cached 
100000000 loops, best of 3: 12.2 ns per loop
Run Code Online (Sandbox Code Playgroud)

只有少数情况我可以让它不会发生,例如:

In …
Run Code Online (Sandbox Code Playgroud)

ipython

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