使用Django ModelForm时,在加载网页时出现“此字段为必填项”错误

2024-06-16 14:40:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在models.py文件中创建了一个名为Annoucement的模型,并在forms.py文件中创建了该模型的表单。然后,我在my views.py中为它创建了简单的创建视图,并使用django crispy forms包在前端显示它,但每当我加载网站时,字段的边框都会显示为红色,表示存在错误。我已经试着检查错误可能是什么,但我没有得到任何运气

This is the image illustrating the problem

models.py

class Announcement_by_dean(models.Model):
    student_id = models.ManyToManyField(add_students_by_manager)
    message = models.TextField()
    sent_date = models.DateField(default=datetime.now(), blank=True)
    updated_date = models.DateField(auto_now=True, blank=True)

    def __str__(self):
        return "message sent on "+ str(self.sent_date)

forms.py

class Annoucement_form(ModelForm):
    class Meta:
        model = Announcement_by_dean
        fields = ['student_id', 'message']

views.py

def dean_page(request):

    annoucement_list = Announcement_by_dean.objects.all()

    if request.method == 'POST':
        form = Annoucement_form(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, _("Message Sent Successfully!!!"))
            return redirect('dean_page')
        else:
            messages.error(request, _("Message Not Sent, Something is Wrong!!!"))
    else:
        form = Annoucement_form()
        messages.error(request, _("Invalid Method!!!"))

        context = {"form":form, "annoucement_list":annoucement_list}
        return render(request, "dean_page.html", context)

dean_page.html

<!-- Send Announcement -->
<div class="tab-pane fade show" id="nav-announcement" role="tabpanel" aria-labelledby="nav-announcement-tab">
  <div class="container mt-4 p-3">
    <form action="{% url 'dean_page' %}" method="POST"  enctype="multipart/form-data">
      {% csrf_token %}
      {{form|crispy}}
      <button type="submit" class="btn btn-success btn-sm">Submit</button>
    </form>        
  </div>
</div>

Tags: pydivformidmessagebymodelsrequest
1条回答
网友
1楼 · 发布于 2024-06-16 14:40:24

我能够解决这个问题,我意识到我的上下文缩进和返回渲染是问题所在

views.py

def dean_page(request):

    annoucement_list = Announcement_by_dean.objects.all().order_by('-id')

    if request.method == 'POST':
        form = Annoucement_form(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, _("Message Sent Successfully!!!"))
            return redirect('dean_page')
        else:
            messages.error(request, _("Message Not Sent, Something is Wrong!!!"))
    else:
        form = Annoucement_form()

        context = {"annoucement_list":annoucement_list, "form":form}
        return render(request, "dean_page.html", context)
to 

def dean_page(request):

    annoucement_list = Announcement_by_dean.objects.all().order_by('-id')

    if request.method == 'POST':
        form = Annoucement_form(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, _("Message Sent Successfully!!!"))
            return redirect('dean_page')
        else:
            messages.error(request, _("Message Not Sent, Something is Wrong!!!"))
    else:
        form = Annoucement_form()

    context = {"annoucement_list":annoucement_list, "form":form}
    return render(request, "dean_page.html", context)

相关问题 更多 >