【发布时间】:2025-12-03 20:35:02
【问题描述】:
为了在我的网站中创建表单,我创建了一些与我的字段对应的模型。然后我从它们、一些视图和模板中创建了 ModelForms。我的问题是我从来没有首先看到我的表单错误,其次,这个特定字段的表单总是无效,即使其中有一个属性。你能解释一下我做错了什么吗?
models.py
class Grapheme(models.Model):
lexeme = models.ForeignKey(Lexeme, on_delete=models.CASCADE)
value = models.CharField(max_length=256)
class Meta:
verbose_name = "grapheme"
ordering = ["value"]
def __str__(self):
return self.value
forms.py
class GraphemeForm(forms.ModelForm):
class Meta:
model = Grapheme
fields = ['value']
views.py
@login_required
def lexeme_edit_view(request, lexicon_id):
[...]
if request.method == 'POST':
lexeme_form = LexemeForm(request.POST)
grapheme_form = GraphemeForm(request.POST)
[...]
if grapheme_form.is_valid(): # This line fails
[...]
template.html
{% if grapheme_form.non_field_errors %}
<div class="alert alert-danger" role="alert">
{% for error in grapheme_form.non_field_errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
[...]
<div class="form-group row">
<label for="graphemeInput" class="control-label col-lg-2">{{ grapheme_form.value.label }}</label>
<div class="col-lg-6">
{% if grapheme_form.is_bound %}
{% if grapheme_form.value.errors %}
{% for error in grapheme_form.value.errors %}
<div class="invalid-feedback">
{{ error }}
</div>
{% endfor %}
{% endif %}
{% if grapheme_form.value.help_text %}
<small class="form-text text-muted">{{ grapheme_form.value.help_text }}</small>
{% endif %}
{% endif %}
{% render_field grapheme_form.value type="text" class+="form-control" id="graphemeInput" %}
</div>
</div>
【问题讨论】:
-
请显示视图的其余部分。您是否将绑定的表单传回模板?
-
当你打印grapheme_form时你能告诉我们输出吗
标签: python django django-forms django-views