@SuNseTgReeN

Работаю с Django при создании формы получаю эту ошибку __init__() got an unexpected keyword argument 'instance' Как можно это исправить?

Не работает страничка с формой. Пытаюсь сделать форму без Meta класса. При попытке перейти на страницу создания высвечивается ошибка
62eeb61270ca6456531450.png
forms.py
from django import forms
from django.core.exceptions import ValidationError

from .models import Post, Category


# class PostForm(forms.ModelForm):
#     class Meta:
#         model = Post
#         fields = [
#             'post_category',
#             'title',
#             'text',
#         ]

class PostForm(forms.Form):
    title = forms.CharField(label='Заголовок')
    text = forms.CharField(label='Текст')
    category_type = forms.ModelChoiceField(label='Метка', queryset=Post.objects.all())
    post_category = forms.ModelChoiceField(label='Категория', queryset=Post.objects.all())

    def clean(self):
        cleaned_data = super().clean()
        title = cleaned_data.get("title")
        text = cleaned_data.get("text")
        if title is not None and len(title) < 20:
            raise ValidationError({
                "title": "Описание не может быть менее 20 символов."
            })

        if title[0].islower():
            raise ValidationError({
                "title": "Описание не может начинаться с маленькой буквы."
            })

        if text == title:
            raise ValidationError(
                "Описание не должно быть идентично тексту поста."
            )

        return cleaned_data


model.py
class Post(models.Model):
    post_author = models.ForeignKey(Author, on_delete=models.CASCADE)

    NEWS = 'NW'
    ARTICLE = 'AR'
    CATEGORY_CHOICES = (
        (NEWS, 'Новость'),
        (ARTICLE, 'Статья'),
    )

    category_type = models.CharField(max_length=2, choices=CATEGORY_CHOICES, default=ARTICLE)
    date_creation = models.DateTimeField(auto_now_add=True)
    post_category = models.ManyToManyField(Category, through='PostCategory')
    title = models.CharField(max_length=128)
    text = models.TextField()
    rating = models.SmallIntegerField(default=0)

    def like(self):
        self.rating += 1
        self.save()

    def dislike(self):
        self.rating -= 1
        self.save()

    def preview(self):
        return self.text[0:48] + '...'

    def count(self):
        count = 0
        count += 1
        return count

    def __str__(self):
        return self.title.title()
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ответы на вопрос 1
@bacon
потому что у forms.Form нет instance
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы