问题描述
我想根据选定的字段验证字段。但是,当我将打印件放在表单上时,选择字段显示为无(但在视图中我可以毫无问题地获取值)。
models.py
class NyModel1(models.Model):
field1 = models.CharField(max_length=50)
description = models.TextField(blank=True)
def __str__(self):
return self.field1
class MyModel2(models.Model):
f_field = models.ForeignKey(NyModel1,on_delete=models.PROTECT)
我的模板
<select id ="id_field" class="select" name="f_field" required=True>
{% for value,field in Form.fields.f_field.choices %}
<option value="{{value}}">
{{field}}
</option>
{% endfor %}
</select>
forms.py
class Form(forms.ModelForm):
document = forms.CharField()
class Meta:
model = MyModel2
fields = ['f_field','document']
def clean_document(self):
doc = self.cleaned_data.get('document')
f= self.cleaned_data.get('f_field')
print("Document: ",doc)
print("f Field : ",f)
if f == "something one":
#validate document
else:
#other action
return doc
在打印中出现:
Document: 12345
f Field : None
编辑:
在我看来,我可以看到 f_field 的值。
查看.,py
def MyView(request):
if request.method == 'POST':
my_form = MyForm(request.POST)
if my_form.is_valid():
f_field = my_form.cleaned_data['f_field']
print("Value f_field: ",f_field) # Here it's OK. I can see the value.
return redirect("my_url")
else:
my_form = MyForm()
context = {}
context['Form'] = my_form
return render(request,"my_app/template.html",context)
我可以在视图中看到值,但在表单中看不到(显示为无)。
如何在forms.py中获取select 的值?
解决方法
修复你的 html
来自
<select id ="id_fild" class="select" name="f_fild" required=True>
到
<select id ="id_field" class="select" name="f_field" required=True>