【问题标题】:Django Form Is Valid not producing any errors but returning FalseDjango Form Is Valid 不产生任何错误但返回 False
【发布时间】:2020-10-07 15:31:26
【问题描述】:

我正在尝试使用表单更新现有模型行(将选项添加到具有先前条目的现有 ManyToMany 字段),但是当我使用 is_valid() 它返回 false 时,我已经通过几种方式检查了错误但是没有显示错误 我在我的模板中使用过:

{% if form.errors %}
{% for field in form %}
    {% for error in field.errors %}
        <div class="errorlogin">
            <strong>{{ error|escape }}</strong>
        </div>
    {% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
    <div class="errorlogin">
        <strong>{{ error|escape }}</strong>
    </div>
{% endfor %}
{% endif %}

在我看来,在 is_valid 之后和 is_valid 函数被调用之前:

print(form.errors)

我的代码如下: 视图.py

def lessonRecord(request,id):
if request.method == "POST":
    id = Lessons.objects.get(id=id)
    form = forms.LessonAddForm(request.POST,instance=id)
    if form.is_valid():
        form.save()
        return redirect('lessons:lessonsView')
    else:
        print(form.errors)
else:
    id = Lessons.objects.get(id=id)
    form = forms.LessonAddForm(instance=id , user=request.user)
return render(request,'lessons/lesson_record.html',{'id':id,'form':form})

forms.py

class LessonAddForm(forms.ModelForm):
def __init__(self, user,*args, **kwargs):
    super(LessonAddForm, self).__init__(*args, **kwargs)
    self.fields['attendees'].queryset = CustomUser.objects.filter(
        Q(username=user) |
        Q(customuser__username=user)
    )
class Meta:
    model = models.Lessons
    fields = ['attendees']

【问题讨论】:

    标签: django django-views


    【解决方案1】:

    问题在于视图和表单。我没有通过发布请求传递用户

    def lessonRecord(request,id):
    if request.method == "POST":
        id = Lessons.objects.get(id=id)
        form = forms.LessonAddForm(request.POST,user=request.user,instance=id)
        if form.is_valid():
            form.save()
            return redirect('lessons:lessonsView')
    

    forms.py

    class LessonAddForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user', None)
        super(LessonAddForm, self).__init__(*args, **kwargs)
        self.fields['attendees'].queryset = CustomUser.objects.filter(
            Q(username=user) |
            Q(customuser__username=user)
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多