我正在使用Django 1.10。
是否有办法告诉信号触发该信号的save()
是在视图Request
内还是由“手动” save()
调用的?
我有一个信号可以执行某些操作。我想执行不同的操作,具体取决于我是否处于请求中间(在Celery任务中更新对象)。
答案 0 :(得分:0)
简短的回答:您不能。至少不是开箱即用。
更长的答案:您可以使用一些本地线程的技巧-cf this project for example-解决此问题,但请仔细阅读警告。
或者您可以使用除orm的pre / post保存信号之外的其他方法来触发您的操作-例如,在有意义的地方使用sending your own signals。就我而言,我首先要设法解决问题。
答案 1 :(得分:-2)
看看Django文档, 但是据我所知,您应该在/urproj/urapp/models.py中定义模型,这通常是一个类声明。并在/urproj/url.py内部使用route方法,也可以在您的应用程序内部。我有这种方法来检测Get请求是否正常,例如?!
class Expense(models.Model):
text = models.CharField(max_length=255)
date = models.DateTimeField()
amount = models.BigIntegerField()
user = models.ForeignKey(User)
def __unicode__(self):
return "{}-{}-{}".format(self.date, self.user, self.amount)
那我使用这样的路由方法吗?
from . import views
urlpatterns = [
url(r'^submit/expense/?$', views.submit_expense, name='submit_expense'),
]
我希望我已经回答了你的问题!