Задать вопрос
@IoannKh

Проблема при отправке формы. Почему при вводе в поле имя и категории пишет, что данного варианта нет среди допустимых значений?

Задача создать новую тему (topic) через форму. Когда ввожу в поле ввода name, category, то пишет: Выберите корректный вариант. Вашего варианта нет среди допустимых значений.
class TopicForm(forms.ModelForm):
    class Meta:
        model = Topic

        fields = ['name', 'category', 'author', 'content', 'tags']

        widgets = {
            'name': forms.TextInput(attrs={'class': 'form-control'}),
            'content': forms.Textarea(attrs={'class': 'form-control'}),
            'author': forms.TextInput(attrs={'class': 'form-control'}),
            'category': forms.TextInput(attrs={'class': 'form-control'}),
            'tags': forms.TextInput(attrs={'class': 'form-control'}),
        }

views.py
class TopicCreate(View):
    def get(self, request):
        form = TopicForm()
        return render(request, 'topic_create_form.html', context={'form': form})


    def post(self, request):
        bound_form = TopicForm(request.POST)
        if bound_form.is_valid():
            new_topic = bound_form.save()
            return redirect(new_topic)
        return render(request, 'create_top.html', context={'form': bound_form})

models.py
class Topic(models.Model):
    name = models.CharField(max_length=200)
    category = models.ForeignKey(
        Category, verbose_name="Category", on_delete=models.SET_NULL, null=True, related_name='topic'
    )
    content = models.TextField()
    likes = models.ManyToManyField(User, related_name='topic_likes', default=None, blank=True)
    created = models.DateTimeField(auto_now_add=True)
    tags = TaggableManager()
    slug = models.SlugField(max_length=130, unique=True, default=uuid.uuid1)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='author_set')
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='topic_bookmark')
    views = models.ManyToManyField(Ip, related_name="post_views", blank=True)
    count_user = models.ManyToManyField(User, through="CountUser")
    objects = models.Manager()

    def total_views(self):
        return self.views.count()

    def user_count(self):
        return self.count_user.count()

    def __str__(self):
        return self.name


    def d_date(self):
        z = self.created.strptime(str(self.created), '%Y-%m-%d %H:%M:%S.%f+%U:%W')
        r = datetime.datetime.today()
        e = r - z
        return e

    def total_likes(self):
        return self.likes.count()

    def get_absolute_url(self):
        # return reverse("forum:topic_detail", kwargs={"slug": self.url})
        return reverse_lazy('forum:topic_detail', kwargs={'slug': self.slug})

    def tag_list(self) -> str:
        return u", ".join(o.name for o in self.tags.all())



    class Meta:
        verbose_name = 'Topic'
        verbose_name_plural = 'Topics'
  • Вопрос задан
  • 683 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
AlexNest
@AlexNest
Работаю с Python/Django
А разве у вас "категория" - текстовое поле или все-таки внешний ключ?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы