質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

1708閲覧

django でListView とCreateViewを同一画面で表示したい。

Junichi_A

総合スコア11

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/02/10 12:09

前提・実現したいこと

djangoで、学習サービスを作っています。レッスンに、カテゴリを紐付ける機能を実装するため、カテゴリの一覧と新規作成画面を実装しようとしていたところ、下記のエラーが発生いたしました。

発生している問題・エラーメッセージ

Generic detail view Category_ListAndCreateView must be called with either an object pk or a slug in the URLconf.

該当のソースコード

python

1# views.py 2class Category_ListView(PermissionRequiredMixin, LoginRequiredMixin, generic.ListView): 3 model = Category 4 fields = ['name'] 5 paginate_by = 30 6 success_url = reverse_lazy('excercise:category_list_and_create') 7 template_name = 'category/list_and_create.html' 8 permission_required = 'excercises.rules_add_category' 9 10 11class Category_ListAndCreateView(ModelFormMixin, Category_ListView): 12 model = Category 13 form_class = CategoryCreateForm 14 15 def get(self, request, *args, **kwargs): 16 self.object = None 17 return super().get(request, *args, **kwargs) 18 19 def post(self, request, *args, **kwargs): 20 self.object = None 21 self.object_list = self.get_queryset() 22 form = self.get_form() 23 if form.is_valid(): 24 return self.form_valid(form) 25 else: 26 return self.form_invalid(form) 27

python

1#forms.py 2class CategoryCreateForm(forms.ModelForm): 3 class Meta: 4 model = Category 5 fields = ('name',)

python

1urls.py 2 path('category/', views.Category_ListAndCreateView.as_view(), name='category_list_and_create'), 3

python

1# models.py 2class Category(models.Model): 3 name = models.CharField('カテゴリ名', max_length=30) 4 5 def __str__(self): 6 return self.name 7 8 def get_latest_post(self): 9 result = Excercise.objects.filter( 10 category=self).order_by('-created_at')[:5] 11 return result 12

試したこと

https://torina.top/detail/337/
こちらのページを参考にさせていただきました。
ListViewを継承しているのですが、DetailViewにはpk ga必要、というエラーの対応がわからず、苦慮しています。
ModelFromMixinが原因の気がするのですが、調べてもたどり着けませんでした。

補足情報(FW/ツールのバージョンなど)

Django Version: 2.1.4
Python Version: 3.7.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Listviewを継承させているようにみえて、DetailViewが継承されているのでエラーが出ているみたいですね。
詳しくみていないのですが、Modelformが悪さをしているようです。

レッスンにカテゴリを紐づけるのであればForeignKeyなど使えばよいのではないでしょうか。

投稿2019/02/11 00:18

ryotax

総合スコア142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Junichi_A

2019/02/11 01:13

ご回答ありがとうございます。カテゴリを複数紐付けたいため、多対多に致しました。私でももっと調べてみたいと思います。
Junichi_A

2019/02/11 01:13 編集

ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問