前提・実現したいこと
新規登録画面を作っていまして、ID(文字列)を自動採番するようにしたのですが、1回目はきちんと自動裁判されるようになっていましたが、2回目以降は1回目と同じ番号になってしまい、プロジェクトを再起動しなければ次の採番が行われません。
まだ理解が浅く、どこを改善すればいいのか教えていただけないでしょうか。
IDは"A-B-18-001""A-B-18-002"と語尾の数字が自動採番するようにしています。
該当のソースコード
python
1#forms.py 2class CreateForm(forms.ModelForm): 3 #IDの先頭をDBから取得 4 cursor = connection.cursor() 5 cursor.execute("SELECT TOP 1 ID from IdOrder Order by ID DESC") 6 idstr = cursor.fetchall() 7 #リストの中のタプルに存在している状態になってる 8 #リストから取り出し 9 idstr = idstr[0] 10 #タプルから取り出し 11 idstr = idstr[0] 12 #分割→語尾3桁を数値型にし1足してデフォルト値の計算 13 idstr = repo.split('-') 14 idint = int(idstr[3]) 15 idint = idint + 1 16 idstr3 = str(idint) 17 idstr3 = idstr3.zfill(3) 18 idstr = idstr[0] + "-" + idstr[1] + "-" + idstr[2] + "-" + idstr3 19 20 ID = forms.CharField(label='ID', max_length=50, widget=forms.TextInput(), initial=idstr) 21 Hakko_date = forms.DateField(label='発行日', widget=datetimepicker.DatePickerInput(format='%Y-%m-%d',options={'locale': 'ja','dayViewHeaderFormat': 'YYYY年 MMMM',})) 22 Hachu_nai = forms.CharField(label='発注内容', max_length=200, widget=forms.TextInput()) 23 24 class Meta: 25 model = Idorder 26 fields = ('ID', 'Hakko_date', 'Hachu_nai') 27
python
1views.py 2class CreateView(LoginRequiredMixin, generic.CreateView): 3 login_url = '/accounts/login/' 4 model = Idorder 5 form_class = CreateForm 6 template_name = 'polls/create.html' 7 success_url ='/polls/'
html
1{% extends 'polls/layout.html' %} 2{% load custom_filters %} 3{% load static %} 4{% block title %}発注台帳{% endblock title %} 5{% block header %}<p>発注台帳 新規作成</p>{% endblock %} 6{% block content %} 7 8 <br /> 9 <br /> 10<div class="content"> 11<form method="post"> 12 {% csrf_token %} 13 <table> 14 {{ form.as_table }} 15 </table> 16 <input type="submit" value="作成"> 17 <a href="/polls/">キャンセル</a> 18</form> 19</div> 20{% endblock %}
補足情報(FW/ツールのバージョンなど)
Python:3.7
Django:2.1:2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。