#実現したいこと
「ショップ、カテゴリ、商品」と3つのモデルを作成しています。
カテゴリを作成し、その情報を引き継いだ状態で商品を作成したいのですが、
方法がわからなかったため投稿させていただきます。
商品を作成する際に、選択したカテゴリが自動で選択されていることを実装したいです。
#試したこと
classベースで作成しているため下記のソースで対応できるかと考えましたが、
試行錯誤を繰り返してもダメでした。
views
1class Item_Create(generic.CreateView): 2 form_class = ItemForm 3 template_name = 'item_create.html' 4 success_url = reverse_lazy('item_list') 5 6 def form_valid(self, form): 7 qryset = form.save(commit=False) 8 qryset.user=self.request.user #ログインユーザーを自動で取込 9 qryset.category=self.request.category #カテゴリを呼び出せるかと思ったが無理だった 10 qryset.save() 11 return super(Item_Create, selft).form_valid(form)
#ソース
model
1class Shop(models.Model): 2 user = models.ForeignKey( 3 settings.AUTH_USER_MODEL, verbose_name='ログインユーザー', on_delete=models.CASCADE 4 ) 5 shop = models.CharField (max_length=100, verbose_name='店舗名') 6 updated_at = models.DateTimeField(auto_now= True) 7 created_at = models.DateTimeField(auto_now_add= True) 8 9 def __str__(self): 10 return f'{self.shop}' 11 12 13class Category(models.Model): 14 user = models.ForeignKey(get_user_model(), verbose_name='ログインユーザー', on_delete=models.CASCADE) 15 shopname = models.ForeignKey(Shop, verbose_name='店舗名', on_delete=models.CASCADE) 16 order = models.IntegerField(blank=False) #カテゴリ番号 17 categoryname = models.CharField(max_length=26, blank=False) 18 createtime = models.DateTimeField('作成日', auto_now_add= True) 19 updatetime = models.DateTimeField('更新日', auto_now= True) 20 21 def __str__(self): 22 return f'{self.categoryname}' 23 24class Item(models.Model): 25 user = models.ForeignKey(get_user_model(), verbose_name='ログインユーザー', on_delete=models.CASCADE) 26 shopname = models.ForeignKey(Shop, verbose_name='店舗名', on_delete=models.CASCADE) 27 category = models.ForeignKey(Category, verbose_name='カテゴリー', on_delete=models.CASCADE) 28 order = models.IntegerField(blank=False) #アイテム番号 29 itemname = models.CharField(max_length=26, blank=False) 30 price = models.IntegerField(blank=False) 31 createtime = models.DateTimeField('作成日', auto_now_add= True) 32 updatetime = models.DateTimeField('更新日', auto_now= True) 33 def __str__(self): 34 return f'{self.category} {self.itemname}'
#最後に
def form_validについても調べましたが、有力が情報が得られませんでした。
わかる方いらっしゃいましたら教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/02 08:03
2020/09/02 22:34 編集
2020/09/03 00:04
2020/09/03 04:53