【问题标题】:Disabling an duplicate database entries || Django禁用重复的数据库条目 ||姜戈
【发布时间】: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


【解决方案1】:

根据 @IainShelvington 的评论。

解决方案是在 Model.py 上声明时将 unique=True 添加到您的关键字段设置中

像这样:

  Complex = models.CharField(choices=complex_list , max_length =  15 ,default='1' , unique=True)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-17
    • 2016-05-02
    • 2012-05-29
    • 2014-07-23
    • 2021-09-17
    • 2021-10-22
    • 1970-01-01
    • 2011-03-14
    相关资源
    最近更新 更多