Задача создать новую тему (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'