###発生したエラーおよび実現したいこと
Djangoで作成したCRUD系アプリにて、新規記事作成ボタンを押したところ、下記の通りTypeErrorが発生するようになりました。
python
1#エラーメッセージ 2TypeError at /post/new/ 3__init__() takes 1 positional argument but 2 were given 4Exception Location: /app/app/views.py in get, line 109 5 6 7#Traceback対象箇所 8 107. class CreatePostView(LoginRequiredMixin, View): 9 108. def get(self, request, *args, **kwargs): 10 109. form = PostForm(request.POST or None) … 11 110. return render(request, 'app/post_form.html', { 12 111. 'form': form 13 112. })
上記エラーメッセージで調べると、ほとんどが__init__(self)の設定し忘れと出るのですが、その様な箇所があるわけでもなく、行き詰まってしまっております。
何かお気づきの点があればご指摘頂きたく、お願い致します。
###各種コード
関係すると思われている箇所を記述いたします。不足等あればご指摘ください。
view.py
python
1class CreatePostView(LoginRequiredMixin, View): 2 def get(self, request, *args, **kwargs): 3 #下記がエラーメッセージの該当箇所です。 4 form = PostForm(request.POST or None) 5 return render(request, 'app/post_form.html', { 6 'form': form 7 }) 8 9 def post(self, request, *args, **kwargs): 10 form = PostForm(request.POST or None) 11 12 if form.is_valid(): 13 post_data = Post() 14 post_data.author = request.user 15 post_data.title = form.cleaned_data['title'] 16 area = form.cleaned_data['area'] 17 post_data.area = get_object_or_404(Area, name=area) 18 attraction = form.cleaned_data['attraction'] 19 post_data.attraction = get_object_or_404(Attraction, name=attraction) 20 category = form.cleaned_data['category'] 21 post_data.category = get_object_or_404(Category, name=category) 22 post_data.content = form.cleaned_data['content'] 23 if request.FILES: 24 post_data.image = request.FILES.get('image') 25 post_data.save() 26 return render(request, 'app/post_preview.html', { 27 'post_data' : post_data 28 }) 29 30 return render(request, 'app/post_form.html', { 31 'form': form 32 })
forms.py
python
1class PostForm(forms.Form): 2 def __init__(self, *args, **kwargs): 3 title = forms.CharField(max_length=50, label='タイトル') 4 area = forms.ModelChoiceField(queryset=Area.objects.all(), label='エリア', widget=forms.Select, initial="----選択してください") 5 attraction = forms.ModelChoiceField(queryset=Attraction.objects.all(), label='アトラクション', widget=forms.Select, initial="----エリアを選択してください") 6 category = forms.ModelChoiceField(queryset=Category.objects.all(), label='カテゴリ', widget=forms.Select, initial="----選択してください") 7 content = forms.CharField(label='内容', widget=forms.Textarea()) 8 image = forms.ImageField(label='イメージ画像', required=False)
models.py
python
1class Post(models.Model): 2 author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 3 area = models.ForeignKey(Area, verbose_name='エリア', on_delete=models.CASCADE) 4 attraction = models.ForeignKey(Attraction, verbose_name='アトラクション', on_delete=models.CASCADE) 5 category = models.ForeignKey(Category, verbose_name='カテゴリ', on_delete=models.CASCADE) 6 title = models.CharField("タイトル", max_length=200) 7 image = models.ImageField(upload_to='images', verbose_name='Image画像', null=True, blank=True) 8 content = models.TextField("本文") 9 created = models.DateTimeField("作成日", default=timezone.now) 10 public = models.BooleanField("公開フラグ", default=False) 11 12 def __str__(self): 13 return str(self.title)
###開発環境
・Visual Studio Code 1.59
・mac OS Catalina 10.15.7
・Github
・Python 3.8.3
・Django 2.2.10
・PostgreSQL
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/04 15:28