【发布时间】:2020-12-19 14:03:25
【问题描述】:
我正在使用 Django 开发一个字典应用程序。我无法使用 Django 的 ModelForm 类成功创建表单,该类允许用户向 BOTH 现有 AND 新字典词条提交新定义。
我的models.py:
class Headword(models.Model):
headword = models.CharField(max_length=64, unique=True)
class Definition(models.Model):
definition = models.CharField(max_length=64)
headword = models.ForeignKey(Headword, related_name="definitions_headword")
我的forms.py:
class DefinitionForm(forms.ModelForm):
class Meta:
model = Definition
fields = ["headword", "definition"]
我的 HTML 表单:
<form action="{% url 'dictionary:define' %}" method="post">
{% csrf_token %}
{{ form }}
<button type="submit">Define</button>
</form>
所有的结果是一个表格:
- 包含数据库中所有词条的下拉菜单,
- 用于定义的文本输入字段,
- 提交按钮。
因此,使用上面的代码,用户只允许向已经存在的词条添加定义。
正如我所说,我想更改它并使用此表单,以便用户能够向 BOTH 现有的词条(下拉菜单中的词条)提交定义,AND 新的(用户可以输入的)。这意味着我根本不需要表单中的下拉菜单,而只需要两个不受约束的文本输入字段和一个提交按钮。
我怎样才能做到这一点?
PS:我尝试使用DefinitionForm 类中的widgets 字典将下拉菜单覆盖为文本输入字段。但是,当我尝试提交表单时,这会导致在词条表单字段上方出现一条错误消息:
选择一个有效的选项。该选择不是可用的选择之一。
【问题讨论】:
标签: python html django django-forms modelform