2013-07-24 111 views
-1

我的問題是如何獲取函數內的對象?在定義中獲取對象Python/Django

class PurchaseOrder(models.Model): 
    product = models.CharField(max_length=256) 
    vendor = models.CharField(max_length=256) 

def send_email_on_new_order(instance, created, raw, **kwargs): 
    if not created or raw: 
     return 

    email=EmailMessage('NEW Purchase Order System', 'message', to=['[email protected]']) 
    email.send() 
signals.post_save.connect(send_email_on_new_order, sender= PurchaseOrder, dispatch_uid = 'send_email_on_new_order') 

因此,對於上面的程序我有每當產生一個新的primay鍵,它會自動發送一封電子郵件給用戶。但是,我怎麼能做出這麼電子郵件的標題給人的產品的PurchaseOrder

+1

'instance.product'沒有工作? – karthikr

回答

1

你的意思呢?

def send_email_on_new_order(instance, created, raw, **kwargs): 
    if not created or raw: 
     return 

    product = instance.product 

    email=EmailMessage('NEW Purchase Order System {0}'.format(product), 'message', to=['[email protected]']) 
    email.send() 

編輯:只是爲了澄清 - instance.product可以安全地直接format()方法的參數。我故意讓它更加冗長。當然,我們可以使用+而不是format,但這又是一種用於表示我們將數據插入到字符串中的方式。

+0

對不起。你的邏輯是有道理的,但我來自C++,所以我仍然在爲語法而努力。你能用我的代碼給出一個.format(product)事物的例子嗎? – Mdjon26

+1

@ Mdjon26,更重要的是'product = instance.product' - 當你在'model'中聲明它們時,你可以直接獲得實例字段。 'str.format()'用''str'內的參數替換'{n}'中的成員。在我的答案中,您的代碼的一部分還有一行。你還需要其它的東西嗎? – ElmoVanKielmo

相關問題