i am trying to create a course from my frontend using django form, everything seems fine but when i hit the create button it just refreshes the page without saving to database or throwing back any error, and that is not what i am expecting.
create-course.html
def create_course(request):
if request.method == "POST":
form = CreateCourse(request.POST, request.FILES)
if form.is_valid():
new_form = form.save(commit=False)
new_form.slug = slugify(new_form.course_title)
new_form.course_creator = request.user
new_form.save()
messages.success(request, f'Your Course Was Successfully Created, Now in Review')
return redirect('dashboard:dashboard')
else:
form = CreateCourse()
context = {
'form': form
}
return render(request, 'dashboard/create_course.html', context)
models.py
class Course(models.Model):
course_title = models.CharField(max_length=10000)
slug = models.SlugField(unique=True)
course_thumbnail = models.ImageField(upload_to=user_directory_path)
short_description = models.CharField(max_length=10000)
course_description = models.TextField()
price = models.IntegerField(default=0)
discount = models.IntegerField(default=0)
requirements = models.CharField(max_length=10000)
course_level = models.CharField(max_length=10000, choices=COURSE_LEVEL)
# course_rating = models.CharField(max_length=10000, choices=COURSE_RATING)
# course_rating = models.ForeignKey(CourseRating, on_delete=models.SET_NULL, null=True, blank=True)
course_language = models.CharField(max_length=10000, choices=COURSE_LANGUAGE)
# course_category = models.CharField(max_length=10000, choices=COURSE_CATEGORY)
course_category = models.ForeignKey(Category, on_delete=models.DO_NOTHING)
course_tag = models.ManyToManyField(Tag)
course_cost_status = models.CharField(max_length=10000, choices=COURSE_COST_STATUS, default="Free")
course_intro_video = models.FileField(upload_to=user_directory_path)
course_intro_video_url = models.URLField(default="https://")
course_intro_video_embedded = models.URLField(default="https://")
course_creator = models.ForeignKey(User, on_delete=models.CASCADE)
date_created = models.DateTimeField(auto_now_add=True, null=True)
course_duration = models.IntegerField(default=0)
course_publish_status = models.CharField(max_length=10000, choices=COURSE_PUBLISH_STATUS)
views = models.IntegerField(default=0)
likes = models.IntegerField(default=0)
featured = models.BooleanField(default=False)
digital = models.BooleanField(default=True)
best_seller = models.BooleanField(default=False)
forms.py
from course.models import Course
from django import forms
class CreateCourse(forms.ModelForm):
class Meta:
model = Course
exclude = ('slug', 'course_cost_status', 'course_creator', 'date_created', 'course_publish_status', 'views', 'likes', 'featured' , 'digital' , 'best_seller')
Advertisement
Answer
this was fixed by just uploading an image, but i wasnt seeing any error because i was not displaying the error in the create page
{{ form.errors }}