【发布时间】:2021-11-24 18:29:54
【问题描述】:
我只是无法让我的模型表单进行验证。我从视图中调用它,并且 GET 正确打印它,但是当 POST 发生时它不会验证。 总是得到
ValueError 异常值:视图 gestionPartesMedicos.views.partes_medicos_add 没有返回 HttpResponse 对象。它返回 None 。
表单的名称属性对应于模型和表单。
---更新---
这是我的模特:
class MedicalList(models.Model):
worker= models.ForeignKey(worker, on_delete=models.CASCADE)
description=models.CharField(max_length=255)
upload=models.FileField(upload_to=user_directory_path, null=False, blank=False)
created_at=models.DateTimeField(auto_now_add=True)
这是我的表单类:
class MedicalListForm(forms.ModelForm):
worker = forms.ModelChoiceField(
queryset=Worker.objects.none(),
empty_label=None,
widget=forms.Select(attrs={'class': 'form-control'})
)
description=forms.CharField(
widget=forms.Textarea(attrs={'class': 'form-control'})
)
upload=forms.FileField(
widget=forms.ClearableFileInput(attrs={'class': 'form-control'})
)
class Meta:
model = MedicalList
fields = (
'worker',
'description',
'upload',
)
def __init__(self, *args, **kwargs):
user_id = kwargs.pop('user_id', None)
super().__init__(*args, **kwargs)
self.fields['worker'].queryset = Worker.objects.filter(user_id=user_id)
我的观点有问题:
def medical_list_add(request):
if request.method == "POST":
form = MedicalListForm(request.POST,request.FILES,user_id=request.user)
if form.is_valid():
form.save()
return redirect('medical_list')
else:
form = MedicalListForm(user_id=request.user)
return render(request, 'medical_list_add.html', {'form': form})
模板中的表格:
<form method="POST">
{% csrf_token %}
<div class="form-group">
{{ form.as_p }}
<button type="submit" class="btn btn-primary">Guardar</button>
<a class="nav-item linking" href = "{% url 'medical_list' %}">Cancel</a>
</div>
</form>
这是我得到的回复:
请求信息 USER 12345
GET 没有 GET 数据
POST 变量值 csrfmiddlewaretoken
'2zG3amQlZlPsrytMtF91ZiJQDZ679E2Zgrx3YxcOPzcNj6dNCl101Lj0UV96STLY' 工人'14'描述'pm'上传'medical.pdf'
可能在 Model 字段 created_at 附近?只是想猜测,完全迷失了。 提前致谢
【问题讨论】:
-
什么是
worker?ForeignKey到worker对象或Trabajador对象? -
对不起,我刚把它翻译成英文,但错过了,它是工作对象的外键
标签: django django-forms