python - 将外键从用户输入传递到数据库
问题描述
我试图让用户输入数据并存储到数据库中并与其他数据映射。
模型:
class Code(models.Model):
name = models.CharField(max_length=4, default=None, blank=True, unique=True)
在模型中,还有另一个类
class Pull(models.Model):
code_pull = models.ForeignKey(Code, on_delete=models.SET_NULL, null=True)
如何在表单和视图中显示调用,以便用户在输入字段中输入数据时传递数据。
形式
class Code_Form(forms.ModelForm):
class Meta:
model = Code
fields = ('name',)
class Pull_Form(forms.ModelForm):
class Meta:
model = Pull
fields = ('code_pull', 'data1', 'prefix',)
#Inital Value is NULL
def __init__(self, *args, **kwargs):
super(Pull_Form, self).__init__(*args, **kwargs)
self.fields['code_pull'].queryset = CODE.objects.none()
if 'code_pull' in self.data:
c = self.data.get('code_pull')
self.fields['code_pull'].queryset = CODE.objects.filter(name=c)
#print(self.fields['code_pull'].queryset)
我更新了 FORM 的代码,以便它初始化 CODE_form 的值,仍然错误,因为代码字段为空
这是视图:
def InputData(request, *args, **kwargs):
form = Pull_Form(request.POST or None)
if request.method == 'POST':
if form.is_valid():
data_add = form.save(commit=False)
data_add.code = form.cleaned_data['code_pull']
data_add.save()
messages.success(request, 'Successfully')
else:
messages.error(request, form.errors)
return render(request, template_name, {'form': form })
错误:无法添加数据,因为code
提交表单时未选择字段。错误代码:code - Select a valid choice. That choice is not one of the available choices.
{{ messages }}
<form id="form1" class="post-form" role=form method="POST" action=".">{% csrf_token %}
<input id="code_pull" class="form-control" type="text" maxlength="4" required></input>
<label for="code_pull">Code</label>
<button type="submit" class="btn">Save</button>
</form>
提前感谢您的帮助。
解决方案
Django 表单使用name
HTML 控件中的属性来捕获表单数据。
<input id="code" name="code" class="form-control" type="text" maxlength="4" required></input>
我只加了name="code"
。这应该使它工作。
推荐阅读
- c# - 使用 DisplayMemberBinding 在 XAML gridview 中设置不同的属性
- ubuntu - tesseract 4 为什么我的训练数据没有编译
- javascript - 有没有办法在不使用道具的情况下更新反应组件?
- spring-boot - 当您已经有一个应用程序端池时,您还需要 AWS RDS 代理吗?
- r - 将许多数据帧与两个相等的列合并,但 R 中的一个特定列
- python - 如何组织一个循环遍历元素列表的 JavaScript 网站 Scrapy 爬虫
- elixir - 如何使用一个字段的转换值作为 Ecto 中另一个字段的默认值
- sql - Visual Studio 2019 - SQL dacpac - 违反 UNIQUE KEY 约束 ....重复键值为 (
) - c++ - 如何使用并行性来提高我的代码的性能?(尝试了一些东西)
- python - 返回值为真的熊猫系列