在什么时候创建了新的ContentTypes,我如何自己触发?
我有一堆南迁移,创造新的模型等.完成所有操作后,将进行最终数据迁移,将这些新对象的权限分配给已具有相关权限的任何组.(我在此选择"相关权限"以在应用程序中理解)
但是,当我运行该数据迁移时,新创建的模型的ContentTypes仍然不可用.它们是我首先运行所有其他迁移,然后才运行额外的数据迁移.即运行命令两次.但在我的案例中,制作手动补丁是不可行的.
因此,我想在运行数据迁移之前手动触发为任何新模型创建ContentTypes.这是怎么做到的?
我正在尝试使用单个关键字参数扩展方法,同时保持对方法的其余部分的公正性; 我只是想传递它.尝试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条线路......
有时候,在Vim中,我只想显示文件的特定部分(例如,特定方法),而隐藏其余部分.
这有助于我专注于手头的问题.
我想这样做而不实际更改文件.有关如何做到这一点的任何想法?
欢呼与问候,克拉斯
我正在寻找一种工具来跟踪"什么在哪里运行".我们有一堆服务器,每个服务器都有很多项目.这些项目可能在特定版本(hg tag/commit nr)上运行,并且在特定版本中也有它们的要求.
通过自动化ssh部分,Fabric看起来像是开始实际部署的良好开端.但是,一旦部署完成,就不会对已完成的操作进行概述.
在重新发明轮子之前,我也想在这里检查一下(我尽我所能,但可能会找到错误的关键词).有没有这样的工具?
(实际上我正在部署Django项目,但我不确定这个问题是否相关;跟踪pip/virtualenv安装或服务器状态的任何事情都应该没问题)
非常感谢,
克拉斯
==========
编辑TEMP.解
==========
目前,我们选择将这些信息简单地存储在一个简单的键值存储(在我们的例子中:文件系统)中,我们非常注意备份(在我们的例子中:使用DCVS).我们使用与实际部署相同的部署工具跟踪此商店(在我们的示例中:fabric)
密码存储在TrueCrypt卷中,该卷存储在我们的键值存储区中.
==========
当某种开源解决方案出现在某个地方时,我仍然乐意接受任何答案.我可能会在不久的将来自己分享(部分)我们的解决方案.
刚刚写了这个小帮手,但是我有一种强烈的感觉“应该已经存在”这样的东西。这叫什么?
@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
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.