いつもお世話になっております。
早速本題に入らせていただきます。
Django を使用し、2つのテーブルを INNER_JOIN した結果を取得したいだけなのですが、どうにも取得できません・・・。
以下が現在のコードとテーブル情報です。
UserMaster の model.py
Python
1class UserMaster(models.Model): 2 class Meta: 3 db_table = 'user_master' 4 5 user_id = models.CharField(verbose_name='ユーザーID', db_column='user_id', primary_key=true) 6 last_name = models.CharField(verbose_name='氏名(姓・漢字)', db_column='last_name', max_length=30) 7 first_name = models.CharField(verbose_name='氏名(名・漢字)', db_column='first_name', max_length=30)
UserMaster のテーブル
user_id | last_name | first_name |
---|---|---|
1 | 山田 | 太郎 |
2 | 田中 | 次郎 |
InfoMaster の model.py
Python
1class InfoMaster(models.Model): 2 class Meta: 3 db_table = 'info_master' 4 5 id = models.AutoField(primary_key=True) 6 title = models.CharField(max_length=20, null=False) 7 user_id = models.ForeignKey(UserMaster, db_column='user_id', on_delete=models.CASCADE)
InfoMaster のテーブル
id | title | user_id |
---|---|---|
1 | 今日のお知らせ | 1 |
2 | 重要情報 | 2 |
3 | 明日は〇〇の日 | 1 |
SQLでなら書けるDjangoでやりたいこと・・・
SQL
1SELECT * FROM InfoMaster as I INNER JOIN User_Master as u 2ON b.user_id = u.user_id
欲しい結果
id | title | user_id | last_name | first_name |
---|---|---|---|---|
1 | 今日のお知らせ | 1 | 山田 | 太郎 |
2 | 重要情報 | 2 | 田中 | 次郎 |
3 | 明日は〇〇の日 | 1 | 山田 | 太郎 |
書いてみたコード1
Python
1queryset = InfoMaster.objects.select_related('user_id').values()
⇒ これで取得できたのは InfoMasterのカラムだけ (last_nameなどは取れなかった)
書いてみたコード2
Python
1queryset = InfoMaster.objects.all().select_related('user_master')
出たエラー
Invalid field name(s) given in select_related: 'user_master'. Choices are: user_id
Djangoでは二つのテーブルの結果を同時に表示することはできないのでしょうか。
SQLでならいとも簡単にできるのにDjangoが絡むと途端にできなくなって途方に暮れております・・・。
お時間ある方で、DjangoでのINNER_JOIN方法をご存知の方いらっしゃいましたらご助力頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/25 11:01