前提・実現したいこと
Djangoを用いて、ユーザーがコミュニケーションの場を提案し、参加する、
という機能を作っています。
発生している問題・エラーメッセージ
募集詳細画面で、募集内容を取得し、テンプレートで表示することはできましたが、
その募集内容に紐づく、参加者の情報とユーザーの情報を習得する方法が分かりません。
該当のソースコード
models.py
python
1class Bosyu(models.Model): 2 bosyu_seq = models.AutoField(primary_key=True) 3 bosyu_kbn = models.CharField(max_length=1) 4 bosyu_limit = models.DateTimeField() 5 venue = models.CharField(max_length=50) 6 venue_datetime = models.DateTimeField() 7 title = models.CharField(max_length=100) 8 main_text = models.TextField(max_length=1000) 9 bosyu_people_cnt = models.IntegerField() 10 bosyu_peple_kbn = models.CharField(max_length=1) 11 status = models.CharField(max_length=1) 12 post_datetime = models.DateTimeField(auto_now=True) 13 post_user_id = models.CharField(max_length=4) 14 update_datetime = models.DateTimeField(auto_now=True) 15 update_user_id = models.CharField(max_length=4) 16 delete_flg = models.CharField(max_length=1) 17 18 class Meta: 19 ordering = ['-bosyu_limit'] 20 21 def __str__(self): 22 return self.title 23 24 25class Join(models.Model): 26 join_seq = models.AutoField(primary_key=True) 27 bosyu_seq = models.ForeignKey(Bosyu, db_column='bosyu_seq', on_delete=models.CASCADE) 28 join_user_id = models.CharField(max_length=4) 29 join_app_datetime = models.DateTimeField(auto_now=True) 30 delete_flg = models.CharField(max_length=1) 31 32 def __int__(self): 33 return self.join_seq 34 35 36class User(models.Model): 37 user_id = models.CharField(max_length=4) 38 emp_no = models.CharField(max_length=4) 39 password = models.CharField(max_length=12) 40 name = models.CharField(max_length=50) 41 admin_flg = models.CharField(max_length=1) 42 43 def __str__(self): 44 return self.name
views.py
python
1class BosyuListView(ListView): 2 model = Bosyu 3 template_name = 'blog/index.html' 4 5 def index(request): 6 bosyu_list = Bosyu.objects.all() 7 context = {'bosyu_list': bosyu_list} 8 return render(request, 'blog/index.html', context) 9 10class BosyuDetailView(DetailView): 11 model = Bosyu 12 13 def get_object(self, queryset=None): 14 obj = super().get_object(queryset=queryset) 15 return obj
試したこと
外部キーが設定されている子テーブルは取得した時点で親もINNER JOIINされている、
という情報を見て、
class BosyuDetailView(DetailView): model = Join def get_object(self, queryset=None): obj = super().get_object(queryset=queryset) return obj
とすれば両方の値が取れるのかと思いましたが、
詳細画面を表示する際にTemplateDoesNotExistエラーとなります。
そもそも、外部キーの設定は現在のModelsの形であっているのでしょうか?
具体的にやりたいことは、
・Bosyuのbosyu_seqに紐づくJoinのデータの取得(Bosyu:Join=1:n)
・Bosyu及びJoinのuser_idに紐づくUserデータの取得(Bosyu:User=1:1)(Join:User=1:1)
補足情報(FW/ツールのバージョンなど)
Python3
Django2
初学者故、基本的なことが理解できておらず大変恐れ入りますが、
ご教示いただけますと幸いです。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。