質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

1991閲覧

リレーションで繋がっていないモデルとの関連したfilter

Meteor

総合スコア18

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/01/31 10:09

TransactionDetailのオブジェクト取得するのに、リレーションで繋がっていないTransactionHeadのカラム情報を確認してfilterをかけたいと考えているのですが可能でしょうか?

・やりたいこと
TransactionHeatのstoreCodeが'0002'だけのTransactionDetailオブジェクト

・リレーションで繋がっていないモデル

django

1class TransactionHead(models.Model): 2 3 class Meta: 4 db_table = 'transaction_head' 5 6 transactionHeadId = models.BigIntegerField(verbose_name="取引ID", null=True) 7 transactionDateTime = models.DateTimeField(verbose_name="取引日時", null=True) 8 transactionHeadDivision = models.CharField(max_length=1, verbose_name="取引区分", null=True) 9 storeId = models.IntegerField(verbose_name="店舗ID (PK)", null=True) 10 storeCode = models.CharField(max_length=20, verbose_name="店舗コード", null=True) 11 12 13class TransactionDetail(models.Model): 14 15 class Meta: 16 db_table = 'transaction_detail' 17 18 transactionHeadId = models.BigIntegerField(verbose_name="取引ID", null=True) 19 transactionDateTime = models.DateTimeField(verbose_name="取引日時", null=True) 20 transactionDetailId = models.IntegerField(verbose_name="取引明細ID", null=True) 21 productCode = models.CharField(max_length=20, verbose_name="商品コード", null=True) 22 productName = models.CharField(max_length=85, verbose_name="商品名", null=True) 23 24 25 @property 26 def transaction_head(self): 27 return TransactionHead.objects.get(transactionHeadId=self.transactionHeadId) 28

・試したこと

django

1transaction = TransactionDetail.objects.filter(TransactionHead.storeCode='0002')

エラーで取得出来ませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

TransactionDetailはtransactionHeadの詳細情報ということでよいでしょうか。
であれば、DB構成を見直したほうがよさそうです。
参考まで、以下のようにしたほうが良い気がしました。

models.py

class TransactionHead(models.Model): # transactionHeadId = models.BigIntegerField(verbose_name="取引ID", null=True) IDはDjangoによって自動で振られるため必要ない transactionDateTime = models.DateTimeField(verbose_name="取引日時", null=True) transactionHeadDivision = models.CharField(max_length=1, verbose_name="取引区分", null=True) storeId = models.ForeignKey('Store', on_delete=models.SET_NULL) productCode = models.ForeignKey('Product', on_delete=models.SET_NULL) class Store(models.Model): # storeId = models.IntegerField(verbose_name="店舗ID (PK)", null=True) IDはDjangoによって自動で振られるため必要ない storeCode = models.CharField(max_length=20, verbose_name="店舗コード", null=True) storeName = models.CharField(max_length=20, verbose_name="店舗名", null=True) class Product(models.Model): productCode = models.CharField(max_length=20, verbose_name="商品コード", null=True) productName = models.CharField(max_length=85, verbose_name="商品名", null=True)

投稿2019/02/05 11:45

alpaka

総合スコア170

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問