【发布时间】:2020-06-23 09:31:35
【问题描述】:
所以我基本上在我的网站上有一个表格。表单字段只是下拉字段。没有文本字段等。 一旦用户填写表单并单击提交,用户选择的下拉 values 将在我的命令提示符中正确打印,因为我希望它们会出现,因为我首先在 cmd 中打印它们,以确保我真的得到了用户通过表单输入的输出。该表单有 5 个下拉字段。该表单在用户的个人资料页面中显示给用户。
现在的问题是我在 models.py 文件中创建了一个模型,它在 Django 数据库中创建了与站点中的表单相同的下拉列表。这样我就可以记录谁选择了哪个选项。数据库模型中也有 5 个下拉菜单。但是当我单击数据库中的对象模型时,它会显示下拉列表,但它们的默认值不是用户通过站点表单提交的值。它们的默认值只是“----”,如果我点击下拉菜单,我也会看到其他选项,但它们的默认值只是“----”。它应该是用户通过表单选择的内容。虽然我在命令提示符中正确获取了值,但在数据库中没有。
我已经尝试了下面的代码。我搜索了很多地方,但找不到答案。
Profile.py
<form method="POST">
{% csrf_token %}
<section id="questionContent">
Have you completed the first file today?
<select id="namazOptions1" name="File1">
<option value="No">No</option>
<option value="Yes">Yes</option>
<option value="N/A">N/A</option>
</select>
<br><br>
Have you completed the second file today?
<select id="namazOptions2" name="File2">
<option value="No">No</option>
<option value="Yes">Yes</option>
<option value="N/A">N/A</option>
</select>
<br><br>
Have you completed the third file today?
<select id="namazOptions3" name="File3">
<option value="No">No</option>
<option value="Yes">Yes</option>
<option value="N/A">N/A</option>
</select>
<br><br>
Have you completed the fourth file today?
<select id="namazOptions4" name="File4">
<option value="No">No</option>
<option value="Yes">Yes</option>
<option value="N/A">N/A</option>
</select>
<br><br>
Have you completed the fifth file today?
<select id="namazOptions5" name="File5">
<option value="No">No</option>
<option value="Yes">Yes</option>
<option value="N/A">N/A</option>
</select>
<br><br>
<a href="" id="submit">Submit</button>
</section>
</form>
Views.py
from .models import FileForm
def profile(request):
if request.method == "POST":
File1 = request.POST.get("File1")
File2 = request.POST.get("File2")
File3 = request.POST.get("File3")
File4 = request.POST.get("File4")
File5 = request.POST.get("File5")
print(File1, File2, File3, File4, File5)
ins = FileForm(File1=File1, File2=File2,
File3=File3, File4=File4, File5=File5)
ins.save()
return render(request, 'profile.html')
Models.py
from django.db import models
# Create your models here.
class FileForm(models.Model):
CHOICES = (
('no', 'NO'),
('yes', 'YES'),
('n/a', 'N/A'),
)
File1 = models.CharField(max_length=6, choices=CHOICES)
File2 = models.CharField(max_length=6, choices=CHOICES)
File3 = models.CharField(max_length=6, choices=CHOICES)
File4 = models.CharField(max_length=6, choices=CHOICES)
File5 = models.CharField(max_length=6, choices=CHOICES)
所以在数据库中,下拉菜单没有显示默认值,如下所示:
感谢您的帮助
【问题讨论】:
-
尝试使用
FileForm.objects.create (File1=File1 ...)而不是ins = FileForm(File1=File1, File2=File2, File3=File3, File4=File4, File5=File5 ins.save() -
这没有帮助。它做同样的事情。
-
你能用
<button type="submit " name="form" >Submit <\button>替换提交吗?在views.py中你做逻辑之前和if request.method == "POST":之后你检查if 'form' in request.POST: -
但这不应该有任何不同。我也试过了
-
尝试将 html 值更改为 no , yes , n/a 以便它与模型中的值匹配 .. fitt 大写字母