[Django3.0]商品登録時にレコードidを付番したqrコードを生成したい

### template側
widget_tweaksでforms.pyからformを作っていきます。

### views.py
mysqlに生成した直後に、生成したばかりのレコードidを*.objects.order_by(“id”).last()で取得して、qrコードのurlに付番する。

def stock_complete(request):
	if(request.method == 'POST'):
		data = StocksForm(request.POST)
		if data.is_valid():
			// データ作成
			category_id = request.POST['category']
			name = request.POST['name']
			unit = request.POST['unit']
			price = request.POST['price']
			total = request.POST['total']
			remark = request.POST['remark']
			stock = Stocks(category_id=category_id, name=name, unit=unit, price=price, total=total, remark=remark)
			stock.save()

			// qrコード作成
			new_data = Stocks.objects.order_by("id").last()
			qr = qrcode.QRCode()
			qr.add_data('http://192.168.33.10:8000/qrcode/' + str(new_data.id))
			qr.make()
			img = qr.make_image()
			img.save('./sales/media/img/qrcode/'+ str(new_data.id) +'.png')

			// 完了画面に遷移
			return render(request, 'sales/stock_complete.html')
		else:
			params = {
				'form': StocksForm(request.POST),
			}
			return render(request, 'sales/stock_input.html', params)
	return redirect('/stock/input')

### mysql側

mysql> select * from sales_stocks;
+—-+——————————+——+——-+——–+——————-+—————————-+—————————-+————-+
| id | name | unit | price | total | remark | created_at | updated_at | category_id |
+—-+——————————+——+——-+——–+——————-+—————————-+—————————-+————-+
| 4 | Foot Massage Machine Shiatsu | 5 | 50880 | 254400 | US MakertPlace社 | 2020-10-09 18:44:48.012892 | 2020-10-09 18:44:48.012925 | 5 |
+—-+——————————+——+——-+——–+——————-+—————————-+—————————-+————-+
1 row in set (0.00 sec)

### qrコード
id4でqrコードが生成されています。

urlもきちんと反映されています。

商品登録時にレコードidを取得するアイディアが思いつかず、商品詳細画面表示に初めてqrコードを生成するべきかずっと悩んでいましたが、order_by(“id”).last()を思いついたら割と簡単にできた。

続けて登録完了画面にqrコードを表示させて、ダウンロードできるように少し改良しました。