【发布时间】:2020-05-29 09:11:01
【问题描述】:
这是我的模板。我有 2 个表单,一个用于提交测试,另一个用于子测试。当我尝试提交一个表单时,我得到 not null_constraint 错误。
<form method="POST">
{% csrf_token %}
<div class="icon-holder">
<i data-modal-target="test-popup" class="icon-cross"></i>
</div>
<div class="input-group">
<input type="text" name="name" placeholder="Test name" />
</div>
<div class="button-group">
<button type="submit">Submit</button>
</div>
</form>
</div>
<div id="menu-test-popup">
<form method="POST">
{% csrf_token %}
<div class="icon-holder">
<i data-modal-target="menu-test-popup" class="icon-cross"></i>
</div>
<div class="input-group">
<label for="test-select">Test Name:</label>
<select name="test-select" id="test-select">
{% for test in test %}
<option value="{{test.name}}" name="choices">{{test.name|title}}</option>
{% endfor %}
</select>
</div>
<div class="input-group">
<input type="text" name="subtest" placeholder="SubTest name" />
</div>
<div class="input-group">
<input type="text" name="reference" placeholder="Reference rate" />
</div>
<div class="input-group">
<input type="text" name="unit" placeholder="Unit" />
</div>
<div class="button-group">
<button type="submit">Submit</button>
</div>
</form>
这是我的模型。在我的模型中,我有测试和子测试。
class Test(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Subtest(models.Model):
name = models.CharField(max_length=100)
test = models.ForeignKey(Test,on_delete=models.CASCADE,related_name='subtest',blank=True, null=True)
unit = models.CharField(max_length=10)
reference_value = models.IntegerField()
selected = models.BooleanField(default=False)
def __str__(self):
return self.name
这是我的看法。第二个是我方便的模板上下文处理器
def home(request):
name = None
if request.method == 'POST':
name = request.POST.get('name')
choices = request.POST.get('choices')
subtest = request.POST.get('subtest')
reference = request.POST.get('reference')
unit = request.POST.get('unit')
test = Test()
subtest = Subtest()
test.name = name
subtest.test = choices
subtest.name = subtest
subtest.unit = unit
subtest.reference_value = reference
test.save()
subtest.save()
print(name)
return redirect('home')
return render(request,'main.html',{})
def list_subtest(request):
return {'subtest':Subtest.objects.all(),'test':Test.objects.all().prefetch_related('subtest')}
【问题讨论】:
-
能否包含错误的堆栈跟踪?
-
@markwalker_ return Database.Cursor.execute(self, query, params) sqlite3.IntegrityError: NOT NULL 约束失败:lab_test.name
-
请注意,以这种方式接近它会完全跳过 django 的形式。因此,如果您创建自己的标记并像这样处理
POST,则不会使用他们提供的所有内置验证和安全性。 -
@markwalker_ 我有 javascript 表单。如果我使用 django 表单,它就会变得一团糟。
标签: python html css django django-templates