简体   繁体   English

我收到“此字段为必填项”。 使用 Django ModelForm 时网页加载错误

[英]I am getting “This field is required.” error on load of webpage when using the Django ModelForm

I made a model called Annoucement in my models.py file as well as the form for it in my forms.py file.我在我的 models.py 文件中制作了一个名为 Annoucement 的 model,并在我的 forms.py 文件中制作了它的表格。 I then made the simple create view for it in my my views.py and made it show on the frontend using the django-crispy-forms package but anytime i load the website, the border of the field appears red showing that there is an error.然后我在我的views.py中为其创建了简单的创建视图,并使用django-crispy-forms package将其显示在前端,但是每当我加载网站时,该字段的边框会显示为红色,表明存在错误. I have tried checking what the error could be but I am not getting any luck around it.我已经尝试检查错误可能是什么,但我没有得到任何运气。

这是说明问题的图像

models.py模型.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 forms.py

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

views.py视图.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 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>

I was able to solve the problem, I realised that the indentation of my context and return render was the issue.我能够解决这个问题,我意识到我的上下文和返回渲染的缩进是问题所在。

views.py视图.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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM