首页 > 解决方案 > form_valid 更新视图

问题描述

亲爱的社区,美好的一天!

我的模型:

class CheckList(models.Model):
    author = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
    ...
    datecompleted = models.DateTimeField(null=True)
    post_date = models.DateTimeField(auto_now=True)

表格.py:

class CompletionChecklistForm(forms.ModelForm):
    class Meta:
        model = CheckList
        fields = ('vessels_name', 'datecompleted')

现在我想更新 'datecompleted' 字段:

视图.py:

class CompleteItemView(UpdateView):
    model = CheckList
    form_class = CompletionChecklistForm
    template_name = 'completion_checklist.html'
    success_url = reverse_lazy('home')

    def form_valid(self, form):
        form.instance.datecompleted = timezone.now()
        form.instance.save()
        return super(CompleteItemView, self).form_valid(form)

模板:

{% block content %}

<h2 class="d-flex justify-content-center">Completion of current Checklist</h2>
<br>
<br>
<container class="d-flex justify-content-center">
    <div class="form-group w-50">
        <h4>Complete: {{ object.vessels_name }}?</h4><br>
        {{ object.datecompleted }}
        <form method="post">
            {% csrf_token %}
            <div class="clearfix">
                <button class="btn btn-danger float-left" type="submit">Yes</button>
                <a href="{% url 'home' %}" class="btn btn-secondary float-right">No, back</a>
            </div>
        </form>
    </div>
</container>

{% endblock %}

没有错误消息,但字段值也没有改变。我的观点正确吗?先感谢您。

标签: django-modelsdjango-views

解决方案


推荐阅读