前提・実現したいこと
django初心者です。
1対1のユーザーテーブルと企業テーブルを作成しています。
ユーザーはdjango-allauthを使用しています。
ユーザーが企業登録をしていれば、詳細表示のDetailViewに、
していなければ新規作成のCreateViewに遷移する機能を作成したいです。
・models.py
python
1class Company(models.Model): 2 user = models.ForeignKey(CustomUser,verbose_name='ユーザー名',on_delete=models.PROTECT) 3 company_name = models.CharField(verbose_name='会社名',max_length=50, blank=True, null=True) 4 department = models.CharField(verbose_name='部署名',max_length=100, blank=True, null=True) 5 charge_of_person = models.CharField(verbose_name='ご担当者様',max_length=50, blank=True, null=True) 6 postal_code = models.CharField(verbose_name='郵便番号',max_length=50, blank=True, null=True) 7 address1 = models.CharField(verbose_name='住所1',max_length=100, blank=True, null=True) 8 address2 = models.CharField(verbose_name='住所2',max_length=100, blank=True, null=True) 9 email = models.CharField(verbose_name='メールアドレス',max_length=50, blank=True, null=True) 10 tel = models.CharField(verbose_name='電話番号',max_length=50, blank=True, null=True) 11 fax = models.CharField(verbose_name='FAX番号',max_length=50, blank=True, null=True) 12 created_date = models.DateTimeField(auto_now_add = True) 13 updated_date = models.DateTimeField(auto_now = True)
・urls.py
python
1from django.urls import path 2 3from . import views 4 5app_name = 'appname' 6 7urlpatterns=[ 8 path('',views.IndexView.as_view(),name = 'index'), 9 path('company_detail/<int:pk>',views.CompanyDetailView.as_view(),name = 'company_detail'), 10 path('company_create/',views.CompanyCreateView.as_view(), name='company_create'),
・views.py
python
1from django.contrib.auth.mixins import LoginRequiredMixin 2from django.urls import reverse,reverse_lazy 3from django.views import generic 4from .models import Company 5 6class IndexView(LoginRequiredMixin,generic.TemplateView): 7 template_name = 'index.html' 8 9 def get(self, request, **kwargs): 10 try: 11 company = Company.objects.get(user = self.request.user) 12 13 except company.DoesNotExist: 14 return reverse('appname:company_create') 15 16 return reverse('appname:company_detail', kwargs={'pk': company.id})
発生している問題・エラーメッセージ
local variable 'company' referenced before assignment
試したこと
・view.py
python
1class IndexView(LoginRequiredMixin,generic.TemplateView): 2 template_name = 'index.html' 3 4 def get(self, request, **kwargs): 5 try: 6 company = Company.objects.get(user = 1)# ← 1を入れてみました 7 8 except company.DoesNotExist: 9 return reverse('appname:company_create') 10 11 return reverse('appname:company_detail', kwargs={'pk': company.id})
エラー
'str' object has no attribute 'get'
わからないこと
1.self.request.userをどこで取得したらいいのか
2.オーバーライドするメソッドはgetでいいのか
他に良い書き方があればご教授頂きたいと思います。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
django=2.2
pyhton=3.8
mysql=14.14 Distrib 5.7.31
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/10/06 20:55
2020/10/09 16:20
退会済みユーザー
2020/10/11 23:20