python - Django - 使用 TextInput 表单查找 ForeignKey
问题描述
我目前正在尝试在 Django 中构建一个应用程序,用户应该能够在其中为模型创建新条目。所述模型包含与不同模型的 ForeignKey 关系。但是,经典的下拉表单字段并不实用,因为可能有数百个条目可供选择。相反,我想让用户简单地输入条目的名称(所有名称都是唯一的),然后在按下提交按钮时将其转换为相应的 ID。
我觉得这应该很简单,但由于我是 Django 新手,我很难弄清楚如何去做。目前的问题是,由于 ForeignKey 不存在(因为用户输入了名称而不是数据库条目的 ID),表单字段被声明为无效。
代码示例:
forms.py
:
class DogForm(ModelForm):
class Meta:
model = Dog
fields = "__all__"
widgets = {" shelter": widgets.TextInput(attrs={"id":" shelter", "placeholder":" Dog Shelter"}),
"name": widgets.TextInput({"id":"name", "placeholder":"Name"}),
def clean(self):
shelter= self.data.get("shelter")
self.cleaned_data["shelter"] = Shelter.objects.get(name=shelter)
return self.cleaned_data
views.py
:
class DogCreate(CreateView):
model = Dog
form_class = DogForm
def form_valid(self, form):
if form.is_valid():
instance = form.save(commit=False)
instance.save()
return super(DogCreate, self).form_valid(form)
如您所见,我的想法是clean
通过添加正确的方法来覆盖该方法Shelter
(self.cleaned_data
基于用户放入 TextInputField 的名称)。但这似乎不起作用,因为当按下提交时,表单仍然被声明为无效。
解决方案
推荐阅读
- python - 在mysql数据库中保存高维numpy数组
- java - JNLP 没有自动下载
- mysql - 是否有一个 MySQL 函数可以将多个单元格中的数据拉到一个单元格中
- python - 保存在 excel 中的 Python 浮点值 4.999999999999999 显示为 5.0
- oracle - 在 LOV Oracle 表单中调用 GET_LIST
- sql - BigQuery 重复的 rank() 数字
- java - Java - 从文本文件中读取并将项目(字符串,数组列表)添加到哈希图中
- android - kotlin - 以编程方式为视图设置 aplha
- javascript - Javascript API GET 请求失败,代码为 404。服务器响应被截断
- python - 多维度上的 Tensorflow embedding_lookup