### 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コードを表示させて、ダウンロードできるように少し改良しました。