2014-03-26 67 views
0

我在我的模型中有一個布爾字段,指示發送給用戶一些信息的電子郵件。 當我在admin中更新它時,我使用模型中的save()方法,並且實際上發送了電子郵件。這工作。django管理員操作vs保存模型類

但是:

當我嘗試使用這樣定義自己的行爲:

def send_this_email(modeladmin, request, queryset): 
    queryset.update(mail_sent=True) 
send_this_email.short_description = "Send email with access data" 

,並在管理類:

actions = [send_this_email] 

save()似乎沒有被執行和電子郵件的方法未發送。我如何強制我的send_this_email執行保存?

如果它很重要我使用grappeli爲我的django管理員。

+0

但是,發送電子郵件的代碼在哪裏? –

+0

@DanielRoseman它在save()方法 – andi

回答

1

Django的文檔指定調用一個查詢集的update()不會調用save或調用任何保存前/保存後的鉤子。我建議你在需要發送電子郵件時明確地調用該函數。

或者,您可以在管理函數中調用save(),但是這會失去update()方法的優點。

+0

那我該如何執行它呢?我應該迭代queryster並調用方法嗎?試過。不工作。 – andi

+0

是的,這應該工作。迭代查詢集中的對象時會發生什麼? – DavidM

+0

是部分。現在我不知道如何引用先前的值。 – andi