检查Django CBV更新

时间:2015-10-13 05:04:55

标签: python django django-views django-class-based-views

我的模型Announcement有一个标准的CBV更新方法:

models.py:

class Announcement(models.Model):
    title = models.CharField(max_length=80)
    ...
    draft = models.BooleanField(default = False)

view.py:

class Update(UpdateView):
    model = Announcement
    form_class = AnnouncementForm
    template_name = 'announcements/form.html'

    @method_decorator(staff_member_required)
    def dispatch(self, *args, **kwargs):
        return super(Update, self).dispatch(*args, **kwargs

使用此CBV Update,如何检查布尔draft字段是否已更改,如果是,则执行操作?

1 个答案:

答案 0 :(得分:3)

你可以这样做:

if 'value' in form.changed_data:

其中:

  • form是您的AnnouncementForm,并且已经过首次验证(form.is_valid
  • value是字段名称

由于您正在使用CBV,您可以将逻辑放在form_valid方法中,以确保所有数据都经过正确验证(除非您有不同的用例)