【问题标题】:Check for changed field in a Django CBV Update检查 Django CBV 更新中的更改字段
【发布时间】:2016-01-10 17:21:10
【问题描述】:

我的模型 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 字段是否已更改,如果已更改,请执行操作?

【问题讨论】:

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


    【解决方案1】:

    你可以这样做:

    if 'value' in form.changed_data:
    

    地点:

    • form 是您的 AnnouncementForm 并已首先验证 (form.is_valid)
    • value 是字段名

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

    【讨论】:

    • 你能帮我用正确的方式调用form_valid吗?我正在与这些 CBV 作斗争
    • @43Tesseracts 你能具体说明你有什么问题吗?
    猜你喜欢
    • 2015-01-11
    • 2013-08-22
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    相关资源
    最近更新 更多