【发布时间】:2021-11-09 08:52:37
【问题描述】:
我目前有一个设置表单,可以将它们的条目输入到 Django SQLite 数据库中。 我显然不希望用户输入 2 个具有相同名称的设置。
我尝试使用 for 循环来检查数据是否存在,但无法正确处理。
这是我当前的表单代码:
Views.py:
def newSetting(request):
form = SettingsForm()
if request.method == 'POST':
form = SettingsForm(request.POST)
if form.is_valid():
form.save()
return render(request , 'main/newSetting.html' , {'form':form})
newSetting.html:
{% extends "main/base.html"%}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-wEmeIV1mKuiNpC+IOBjI7aAzPcEZeedi5yW5f2yOq55WWLwNGmvvx4Um1vskeMj0" crossorigin="anonymous">
<style >
.row_container{
line-height: 500%;
}
</style>
{% block content %}
<form class="form-group mt-4" action="" method="post">
{% csrf_token %}
{{ form.Complex }}
<br>
<br>
<div class="row_container" name='TRB-YTD'>
<div class="row mb-.1">
<div class="col" style="left-align">
{{ form.Trial_balance_Year_to_date }}
</div>
<div class="col-11">
<p> Trial balance YTD</p>
</div>
</div>
</div>
<div class="row_container" name="TRB-MONTH">
<div class="row ">
<div class="col" style="left-align">
{{ form.Trial_balance_Monthly }}
</div>
<div class="col-11">
<p> Trial balance Monthly</p>
</div>
</div>
</div>
<div class="row_container" name="IS-YTD">
<div class="row ">
<div class="col" style="left-align">
{{ form.Income_Statement_Year_to_date }}
</div>
<div class="col-11">
<p> Income Statement YTD</p>
</div>
</div>
</div>
<div class="row_container" name="IS-MONTHLY">
<div class="row ">
<div class="col" style="left-align">
{{ form.Income_Statement_Monthly }}
</div>
<div class="col-11">
<p> Income Statement Monthly</p>
</div>
</div>
</div>
<div class="row_container" name="AGE-ANALYSIS">
<div class="row ">
<div class="col" style="left-align">
{{ form.Age_Analysis }}
</div>
<div class="col-11">
<p> Age Analysis</p>
</div>
</div>
</div>
<div class="row_container" name="BAL-SHEET">
<div class="row ">
<div class="col" style="left-align">
{{ form.Balance_Sheet }}
</div>
<div class="col-11">
<p> Balance Sheet</p>
</div>
</div>
</div>
<div class="row_container" name="REP-MAIN-GL">
<div class="row ">
<div class="col" style="left-align">
{{ form.Repair_and_Maintenance_General_Ledger }}
</div>
<div class="col-11">
<p> Repair & Maintenance GL</p>
</div>
</div>
</div>
<div class="row_container" name="MAJOR-CAPTAL-GL">
<div class="row ">
<div class="col" style="left-align">
{{ form.Mayor_capital_Items_General_Ledger }}
</div>
<div class="col-11">
<p> Major Capital Items GL</p>
</div>
</div>
</div>
<button type="submit" name="button" class="btn btn-success "> Submit </button>
</form>
{% endblock %}
模型.py:
class SettingsClass(models.Model):
Complex = models.CharField(choices=complex_list , max_length = 15 ,default='1')
Trial_balance_Year_to_date= models.BooleanField(default = False)
Trial_balance_Monthly=models.BooleanField(default = False)
Income_Statement_Year_to_date=models.BooleanField(default = False)
Income_Statement_Monthly=models.BooleanField(default = False)
Age_Analysis=models.BooleanField(default = False)
Balance_Sheet=models.BooleanField(default = False)
Repair_and_Maintenance_General_Ledger=models.BooleanField(default = False)
Mayor_capital_Items_General_Ledger=models.BooleanField(default = False)
def __str__(self):
return (self.Complex + ' Settings')
我想使用“复杂”字段检查重复的数据库条目
【问题讨论】:
-
如果复杂字段需要唯一添加
unique=True。这将在 DB 列上创建一个唯一索引,以防止在 DB 级别重复,并且在使用 ModelForm 时将返回验证错误 -
谢谢@IainShelvington,这确实有效,我将添加此问题的答案以供参考。
标签: python html django django-models django-forms