2012-02-23 9 views
0

私はこのコードで特定の人に電子メールを送信したいこのUpdateViewサブクラスDjango GenericView Update - フォームが保存されている場合に電子メールを送信 - どのように?

class UpdateShipView(UpdateView): 
    form_class = CruiseShipForm 
    template_name = 'cruise/ship_form.html' 
    success_url = 'cruise/ships' 

    def get_object(self, queryset=None): 
     obj = CruiseShip.objects.get(pk=self.kwargs['ship_id']) 
     return obj 

を持っている:

def form_valid(): 
    msg = 'bla bla'  
    send_mail('Cruise Ship change: ', msg, '[email protected]', 
     user_emails, fail_silently=False) 
    return super(UpdateShipView, self).form_valid() 

私はこのエラーを取得する:

Django Version: 1.3.1 
Exception Type: TypeError 
Exception Value: form_valid() takes no arguments (2 given) 

私は私が必要と考えていますform_valid()メソッドを書き直しましたが、この時点では私を案内する例は見ていません

答えて

0

私は最終的に何をしなければならないかをフォローアップしたいと思います。

import django.contrib.auth as auth 
from django.core.mail import send_mail 

def form_valid(self, form): 
    group = auth.models.Group.objects.get(name='cruise') 
    users = group.user_set.all() 
    user_emails = [] 
    for u in users: 
     user_emails.append(u.email) 
     print u.username, u.email 
    cruise_ship = self.get_object() 
    msg = "%s (%d) has changed."% (cruise_ship.name, cruise_ship.shipid) 
    msg += "\nYou can review it here: http://localhost:8000/cruise/ships/%d/" % cruise_ship.shipid 
    # print user_emails #for debug 
    send_mail('Cruise Ship change: ' + cruise_ship.name, msg, '[email protected]', 
     user_emails, fail_silently=False) 
     #context = super(PublisherDetailView, self).get_context_data(**kwargs) 

    return super(UpdateShipView, self).form_valid(form) 
0

UpdateViewオブジェクトのform_validメソッドには引数 "form"が必要です。このメソッドの定義は、次のようにしなければなりません:

def form_valid(self, form): 
    .... 
+0

@ kosmos343ありがとうございました。私は私のform_valid defを変更しましたが、どうすれば親フォームが正しく呼び出されますか?フォームが実際に検証された場合にのみこのコードが実行されますか? –

+0

であるかどうかを調べるform_valid()であるかどうかをチェックするform_validは、フォームが有効なとき、フォームが有効でないときに呼び出され、form_invalidメソッドと呼ばれる。 form_validという親を呼び出すことはできません。ソースから追​​加できる情報django/views/generic/edit.py – kosmos342

関連する問題