小编Kla*_*ven的帖子

Django:如何触发为新模型创建ContentTypes?

在什么时候创建了新的ContentTypes,我如何自己触发?

我有一堆南迁移,创造新的模型等.完成所有操作后,将进行最终数据迁移,将这些新对象的权限分配给已具有相关权限的任何组.(我在此选择"相关权限"以在应用程序中理解)

但是,当我运行该数据迁移时,新创建的模型的ContentTypes仍然不可用.它们是我首先运行所有其他迁移,然后才运行额外的数据迁移.即运行命令两次.但在我的案例中,制作手动补丁是不可行的.

因此,我想在运行数据迁移之前手动触发为任何新模型创建ContentTypes.这是怎么做到的?

django

8
推荐指数
1
解决办法
1828
查看次数

Python:使用一个或多个关键字参数扩展方法的优雅习惯是什么?

我正在尝试使用单个关键字参数扩展方法,同时保持对方法的其余部分的公正性; 我只是想传递它.尝试0:

class SomeSuperclass(object):
    pass # in reality: some implementation for some_method

class SomeClass(SomeSuperclass):
    def some_method(self, my_kwarg=42, *args, **kwargs):
        super(SomeClass, self).some_method(*args, **kwargs)
        do_something_interesting_with(my_kwarg)

SomeClass().some_method('arg 0', 'arg 1', some_kwargs=5, my_kwarg=8)
Run Code Online (Sandbox Code Playgroud)

这不起作用:

Traceback (most recent call last):
  File "test.py", line 9, in <module>
    SomeClass().some_method('arg 0', 'arg 1', some_kwargs=5, my_kwarg=8)
TypeError: some_method() got multiple values for keyword argument 'my_kwarg'
Run Code Online (Sandbox Code Playgroud)

我完全理解为什么以上不起作用,但我正在寻找一种很好的方法来使它工作.这是我目前(丑陋)的解决方法:

class SomeClass(SomeSuperclass):
    def some_method(self, *args, **kwargs):
        my_kwarg = kwargs.get('my_kwarg', 42) 
        if 'my_kwarg' in kwargs:
            del kwargs['my_kwarg']
        super(SomeClass, self).some_method(*args, **kwargs)
        do_something_interesting_with(my_kwarg)
Run Code Online (Sandbox Code Playgroud)

这是每个kwarg 3条线路......

python

7
推荐指数
1
解决办法
269
查看次数

Vim:暂时只显示特定的行

有时候,在Vim中,我只想显示文件的特定部分(例如,特定方法),而隐藏其余部分.

这有助于我专注于手头的问题.

我想这样做而不实际更改文件.有关如何做到这一点的任何想法?

欢呼与问候,克拉斯

vim

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

Python:跟踪部署的工具

我正在寻找一种工具来跟踪"什么在哪里运行".我们有一堆服务器,每个服务器都有很多项目.这些项目可能在特定版本(hg tag/commit nr)上运行,并且在特定版本中也有它们的要求.

通过自动化ssh部分,Fabric看起来像是开始实际部署的良好开端.但是,一旦部署完成,就不会对已完成的操作进行概述.

在重新发明轮子之前,我也想在这里检查一下(我尽我所能,但可能会找到错误的关键词).有没有这样的工具?

(实际上我正在部署Django项目,但我不确定这个问题是否相关;跟踪pip/virtualenv安装或服务器状态的任何事情都应该没问题)

非常感谢,

克拉斯

==========

编辑TEMP.解

==========

目前,我们选择将这些信息简单地存储在一个简单的键值存储(在我们的例子中:文件系统)中,我们非常注意备份(在我们的例子中:使用DCVS).我们使用与实际部署相同的部署工具跟踪此商店(在我们的示例中:fabric)

密码存储在TrueCrypt卷中,该卷存储在我们的键值存储区中.

==========

当某种开源解决方案出现在某个地方时,我仍然乐意接受任何答案.我可能会在不久的将来自己分享(部分)我们的解决方案.

python deployment web-deployment

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

Python:从列表中删除项目直到项目匹配条件的惯用方法?

刚刚写了这个小帮手,但是我有一种强烈的感觉“应该已经存在”这样的东西。这叫什么?

@listify
def drop_up_to_and_including(l, f):
    """Drops items from a list 'l' up until and including an element `e` is found for which `f(e) == True`

    Example::
    >>> drop_up_to_and_including(range(10), lambda x: x == 5)
    [6, 7, 8, 9]
    """
    found = False
    for e in l:
        if found:
            yield e

        if f(e):
            # note: after yield-statement; so we'll yield starting from the first item _after_ f(e) == True
            found = True
Run Code Online (Sandbox Code Playgroud)

listify做你认为它做的事情:https : //github.com/shazow/unstdlib.py/blob/master/unstdlib/standard/list_.py#L149

python

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

Django模型:通过外键跟随保留对象标识

Django的ORM(版本1.2.3)在来回跟踪外键时不保留标识.最好用一个例子来解释:

class Parent(models.Model):
    pass

class Child(models.Model):
    parent = models.ForeignKey(Parent)

parent = Parents.objects.get(id=1)
for child in parent.child_set.all():
    print id(child.parent), "=!", id(parent)
Run Code Online (Sandbox Code Playgroud)

因此,对于每个子节点,即使我们在获取子节点时知道父节点,也会从数据库中重新获取父节点.这对我来说是违反直觉的.

在我的情况下,这也会导致性能问题,因为我在父级别做了一些繁重的操作,我想在对象实例级别缓存.但是,由于这些计算的结果是通过child => parent链接访问的,因此父级别的此缓存是无用的.

关于如何解决这个问题的任何想法?

我已经知道有一个ForeignRelatedObjectsDescriptor和一个ReverseSingleRelatedObjectDescriptor.

django django-models

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

标签 统计

python ×3

django ×2

deployment ×1

django-models ×1

vim ×1

web-deployment ×1