POSと連携したシステムを独学で作っているのですが、うまく情報を引き出せずにいます。
システムは、python3.6 django2.1を使用しています。
目標:
売上データを表示するリストに売れた店名を表示させたい
現状:
リレーションで関連づけていないため、数字のコードの表記のみ
外部システムからAPIで売上データが飛んできます。
売上情報TransactionHeadとTransactionDetailの二つがあり、この二つはリレーションしていません。
この二つは、データの構造を変えずにデータベースへ保存しています。
保存した売上データをDjango内でリスト表示するために、下記のviewで一覧表示を出しています。
django
1class TransactionListView(ListView): 2 def get_context_data(self, **kwargs): 3 user_id = self.request.user.id 4 context = super(TransactionListView, self).get_context_data(**kwargs) 5 context["object_list"] = [] 6 for detail in TransactionDetail.objects.filter(user_id=user_id).order_by('-dateTime'): 7 head = TransactionHead.objects.filter( 8 transactionHeadId=detail.transactionHeadId).first() 9 10 tmp = {} 11 for d in head.__dict__: 12 tmp[d] = head.__dict__[d] 13 for d in detail.__dict__: 14 tmp[d] = detail.__dict__[d] 15 16 context["object_list"].append(tmp) 17 return context
TransactionHeadの中にstoreCodeという情報を持っていて4桁の数字が入っています。
storeというモデルがあり、id,store_code,store_nameのカラムを持っています。
model
1class TransactionHead(models.Model): 2 transactionHeadId = models.BigIntegerField(verbose_name="取引ID", null=True) 3 transactionDateTime = models.DateTimeField(verbose_name="取引日時", null=True) 4 subtotal = models.DecimalField(max_digits=9, decimal_places=0, verbose_name="小計", null=True) 5 total = models.DecimalField(max_digits=9, decimal_places=0, verbose_name="合計", null=True) 6 storeCode = models.CharField(max_length=20, verbose_name="店舗コード", null=True) 7 8class TransactionDetail(models.Model): 9 transactionHeadId = models.BigIntegerField(verbose_name="取引ID", null=True) 10 productId = models.BigIntegerField(verbose_name="商品ID", null=True) 11 productCode = models.CharField(max_length=20, verbose_name="商品コード", null=True) 12 13class Store(models.Model): 14 id = models.BigIntegerField(verbose_name="ID") 15 store_name = models.CharField(max_length=255, verbose_name="店名") 16 store_code = models.CharField(max_length=255, verbose_name="ストアコード", blank=True) 17
storeCodeに対応するstore_nameを紐ずけてテンプレートのリストに表示したいのですが、どの様に記述すれば解決出来るかお知恵をいただきたいです。
テンプレート上で{% for object in object_list %}の{{object.store_name}}で表示出来るのを目指しています。
(尚、運用は開始しておりデータがどんどん溜まってきます。よってリレーションで繋げられていません。)
何卒よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー