禁用重复的数据库条目 ||姜戈
Disabling an duplicate database entries || Django
我目前有一个设置表单,可以将他们的条目输入到 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 %}
Model.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')
我想用“复杂”字段检查重复的数据库条目
根据 @IainShelvington 的评论。
解决方案是在 Model.py
上声明时将 unique=True
添加到您的关键字段设置
像这样:
Complex = models.CharField(choices=complex_list , max_length = 15 ,default='1' , unique=True)
我目前有一个设置表单,可以将他们的条目输入到 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 %}
Model.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')
我想用“复杂”字段检查重复的数据库条目
根据 @IainShelvington 的评论。
解决方案是在 Model.py
上声明时将unique=True
添加到您的关键字段设置
像这样:
Complex = models.CharField(choices=complex_list , max_length = 15 ,default='1' , unique=True)