Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django GenericView更新--保存表单时发送电子邮件--如何更新?_Django_Django Views - Fatal编程技术网

Django GenericView更新--保存表单时发送电子邮件--如何更新?

Django GenericView更新--保存表单时发送电子邮件--如何更新?,django,django-views,Django,Django Views,我有这个UpdateView子类 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.kwa

我有这个UpdateView子类

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, 'offer_entry@ensembletravel.com',
        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()方法,但目前我还没有看到一个示例来指导我

UpdateView对象的form_valid方法必须有参数“form”。此方法的定义必须为:

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

我想继续我最后的工作

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, 'offer_entry@ensembletravel.com',
        user_emails, fail_silently=False)
        #context = super(PublisherDetailView, self).get_context_data(**kwargs)

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

感谢@kosmos343,我更改了我的表单\u valid def,但是我如何正确地称父表单\u valid?这段代码是否只有在表单实际验证时才运行?或者form_valid()检查是否为form_valid,当form有效时调用,当form无效时调用form_invalid方法。您不能调用父窗体\u valid,您可以从源django/views/generic/edit.py输入更多信息