总之,我对django信号有一个问题.
我有一个模型为了加快页面加载的响应速度,我正在卸载必须完成的一些密集处理,通过调用我们正在运行的第二个localhost网络服务器,两者都使用相同的数据库.我看到调用进程可以检索对象的行为,但被调用的进程不能.端口80和端口[端口]都指向运行在同一数据库中的django进程.
在models.py中
class A(models.Model):
stuff...
def trigger_on_post_save( sender, instance, create, raw, **keywords):
#This line works
A.objects.get( pk=instance.pk )
#then we call this
urlopen( r'http://127.0.0.1:[port]' +
reverse(some_view_url, args(instance_pk) ).read()
post_save.connect( trigger_on_post_save, A )
Run Code Online (Sandbox Code Playgroud)
在views.py中
def some_view_function( request, a_pk ):
#This line raises an object_not_found exception
A.objects.get( pk=a_pk )
Run Code Online (Sandbox Code Playgroud)
此外,在urlopen调用引发异常之后,该对象在数据库中不存在.据我所知,在保存对象后调用了post_save,并将其写入数据库.这是不正确的?
所有,正如标题所问,是否可以__get__在运行时更改描述符的方法。我处于这样一种情况,我有一个函数在运行时被装饰和未装饰。我希望这个函数的结果可以作为一个属性使用,类似于@property所做的。我研究了一下,发现它是一个描述符,但似乎描述符的__get__方法是只读的。
class Test( object ):
def __init__( self ):
self._x = 10
def get_x( self ):
return self._x
@property
def x( self ):
return self.get_x()
Run Code Online (Sandbox Code Playgroud)
上面的代码大致上做了我想要的
get_x方法instance.x 返回正确的值我的问题是我宁愿不必创建该get_x方法,因为它基本上是不必要的。我只是无法装饰__get__x的方法,因为它是只读的。
背景
我正在编写一个回合制策略游戏,我正在使用装饰器来实现持久条件。当我使用测试用例时,我能够有效地实现这些装饰器,但问题是要获取计算值,您必须使用函数调用,而不是属性访问。这似乎是一个坏主意,因为获取描述单元的值会不一致地使用函数或属性。如果可以,我想对属性进行标准化。
我正在使用Selenium WebDriver 工具,想知道该工具是否提供了一种捕获提交表单时生成的 POST 数据的方法。我正在使用 django 测试框架来测试我的数据是否在后端正确处理,我想使用 Selenium 来验证表单是否生成了预期的数据。
所有,
我基本上都在尝试进行关键字通知,因此每当创建具有名称的对象时,任何想要收到此名称中的任何单词的通知的人都会被通知。
例如
记录: 关键词:你好 关键词:世界 新名称:“你好世界” 返回两条记录
我已经在 sqlite 中创建了一个正确适用于此的查询,并且我知道如何跨数据库翻译它。
SELECT * FROM table t
WHERE "a constant string" LIKE "%" || t.field || "%";
Run Code Online (Sandbox Code Playgroud)
我已经确定在 django 中,可以使用F() 对象将一个字段与另一个字段进行比较,如下所示:
Entry.objects.filter(n_comments__gt=F('n_pingbacks'))
Run Code Online (Sandbox Code Playgroud)
现在有人知道如何用常量字符串替换第一个字段吗?像这样:
Entry.objects.filter("constant string"__icontains=F('n_pingbacks'))
Run Code Online (Sandbox Code Playgroud)
还是我要倒退?