Django Select a valid choice. That choice is not one of the available choices при создании формы
Не знаю как сделать так чтобы форма работала
forms.py
from django import forms
from .models import *
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'posts', 'category']
widgets = {
'title': forms.TextInput(attrs={'class': 'form-control'}),
'posts': forms.Textarea(attrs={'class': 'form-control'}),
'category': forms.SelectMultiple(attrs={'class': 'form-control'}),
}
Views.py
from django.views import View
from django.shortcuts import render, redirect
from .models import *
from .forms import PostForm
# Create your views here.
def main(request):
posts = Post.objects.all()
context = {'posts': posts}
return render(request, 'blogs/main.html', context)
def postPage(request, title):
post = Post.objects.get(title__iexact=title)
context = {'post': post}
return render(request, 'blogs/post_page.html', context)
class CreatePost(View):
def get(self, requests):
form = PostForm()
return render(requests, 'blogs/post_editing.html', context={'form': form})
def post(self, requests):
bound_form = PostForm(requests.POST)
if bound_form.is_valid():
new_post = bound_form.save()
return redirect(new_post)
return render(requests, 'blogs/post_editing.html', context={'form': bound_form})
Urls.py
from django.urls import path
from .views import *
urlpatterns = [
path('', main, name='main'),
path('post_page/<str:title>/', postPage, name='postPage'),
path('create_post/', CreatePost.as_view(), name='createPost'),
]
models
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Category(models.Model):
name = models.CharField(max_length=255, verbose_name='Имя категории')
category_balls = models.FloatField()
slug = models.SlugField(unique=True)
def __str__(self):
return self.name
class Author(models.Model):
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
email = models.CharField(max_length=122, null=True, verbose_name='Email')
first_name = models.CharField(max_length=225, null=True, verbose_name='Имя')
last_name = models.CharField(max_length=255, null=True, verbose_name='Фамилия')
avatar = models.ImageField(upload_to='photos/%Y/%m/%d/', verbose_name='Изображение')
def __str__(self):
return self.first_name
class Post(models.Model):
title = models.CharField(max_length=1000, verbose_name='Название блога')
category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='Категория', blank=True)
author = models.ForeignKey(Author, on_delete=models.CASCADE, verbose_name='Автор')
posts = models.CharField(max_length=5000, verbose_name='Тело блога')
time_publicaton = models.DateTimeField(auto_now_add=True, verbose_name='Время публикации')
def __str__(self):
return self.title