前提・実現したいこと
現在、商品登録画面(階層登録)を作成しています。
カテゴリーを作成し、その中に商品名を登録する形です。
ログインユーザーごとにshop_idなどを振り分けて、
それに合致したモデルをテンプレートで表示したいと考えています。
発生している問題・エラーメッセージ
/adminよりカテゴリーを登録すると、一覧に表示するというところまでは実現できています。
カテゴリー作成ボタンも実装しており、現在入力可能な項目は「ショップ名、並び順、カテゴリ名」の
3つを入力することで一覧にその情報を表示する形をしています。
ログインユーザーを識別し、ショップ名を自動で入れることが出来ず困っています。
※ショップ登録時にログインユーザーを設定はしています。(models参照)
該当のソースコード
models
1# 店舗情報 ログイン情報 2class Shop(models.Model): 3 user = models.ForeignKey( 4 settings.AUTH_USER_MODEL, verbose_name='ログインユーザー', on_delete=models.CASCADE 5 ) 6 company = models.CharField(max_length=100, verbose_name='会社名') 7 shop = models.CharField (max_length=100, verbose_name='店舗名') #店舗名 8 updated_at = models.DateTimeField(auto_now= True) 9 created_at = models.DateTimeField(auto_now_add= True) 10 11 def __str__(self): 12 return f'{self.company} - {self.shop}' 13 14 15class Category(models.Model): 16 shopname = models.ForeignKey(Shop, verbose_name='店舗名', on_delete=models.CASCADE) 17 order = models.IntegerField(blank=False) 18 categoryname = models.CharField(max_length=26, blank=False) 19 createtime = models.DateTimeField('作成日', auto_now_add= True) 20 updatetime = models.DateTimeField('更新日', auto_now= True) 21 22 def __str__(self): 23 return f'{self.categoryname}'
urls
1from django.urls import path 2from . import views 3 4urlpatterns = [ 5 path('list/', views.Cate_List.as_view(), name='cate_list'), 6 path('list/create/', views.Cate_Create.as_view(), name='cate_create') 7 ]
views
1class Cate_Create(generic.CreateView): 2 template_name = 'cate_create.html' 3 model = Category 4 fields = ('shopname', 'order', 'categoryname') #shopnameにて手入力できる状況になっています。これをログインユーザーで判断し自動にしたいです。 5 success_url = reverse_lazy('cate_list') 6 7 def get_context_data(self, **kwargs): 8 context = super().get_context_data(**kwargs) 9 return context
html
1{% extends 'base.html' %} 2 3{% block content %} 4<body style="background-color:paleturquoise"> 5<form action="" method="POST" enctype="multipart/form-data" class="ml-1">{% csrf_token %} 6 <p>ショップ:{{ form.shopname }}</p> #ログインユーザーで登録したshopが自動で入るようにしたい 7 <p>並び順:{{ form.order }}</p> 8 <p>カテゴリ名:{{ form.categoryname }}</p> 9 <input class="btn btn-primary" type="submit" value="保存"> 10 <a class="btn btn-secondary" href="{% url 'cate_list' %}">cancel</a> 11</form> 12</body> 13{% endblock content %}
試したこと
urlに引数などを渡すことで実現可能かと考えましたが、
shop_idや、shop_pkなど、いろんな引数で試しましたがうまくいきませんでした。
そもそもが間違っている可能性は大いにあります...。
ログインユーザーごとで識別することが出来るのか教えていただけますと幸いです。
#追記
ログインユーザーが作成したカテゴリーや商品をログインユーザーのみ
見ることが出来るようにしたいというのが本題の意味です。
どのように実装できるのかが検討もつかないのでご教授お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。