Как сохранить данные формы в базу данных в Django?

Я пытаюсь сохранить данные формы из шаблона Django в Django Model. Ошибка не возникает, но и данные не сохраняются

Не могли бы вы сообщить мне, в чем может быть проблема и как мне ее решить?

Вот мой шаблон формы Django:

<form  method="POST" class="review-form" autocomplete="on">
                                                    {% csrf_token %}
                                                    <div class="rating-form">
                                                        <label for="rating">Your Overall  Rating Of This Product :</label>
                                                        <span class="rating-stars">
                                                            <a class="star-1" href="#">1</a>
                                                            <a class="star-2" href="#">2</a>
                                                            <a class="star-3" href="#">3</a>
                                                            
                                                        </span>
                                                        <select name="rating" id="rating" required=""
                                                            style="display: none;">
                                                            <option value="">Rate…</option>
                                                         
                                                            <option value="3">Average</option>
                                                            <option value="2">Not that bad</option>
                                                            <option value="1">Very poor</option>
                                                        </select>
                                                    </div>
                                                    <textarea cols="30" rows="6"
                                                        placeholder="What did you like or dislike? What did you use this product for?" class="form-control"
                                                        id="review" name="description"></textarea>
                                                    <div class="row gutter-md">
                                                        <div class="col-md-12">
                                                            <input type="text" class="form-control"
                                                                placeholder="Your Name - This is how you'll appear to other customers*" id="author"  name ="name">
                                                        </div>
                                                        
                                                    </div>
                                                    
                                                    <button type="submit" class="btn btn-dark">Submit Review</button>
                                                </form>

My Forms.py

class ReviewForm(forms.ModelForm):
class Meta:
    model = Reviews
    fields = ('rating', 'description', 'display_name')
    

Мои взгляды:

def reviews(request, slug):
    if request.method == "POST":
        if request.user.is_authenticated:
            form = ReviewForm(request.POST)                 
            if form.is_valid():
                review = form.save(commit=False)
                review.product = Products.objects.get(slug=slug)
                review.user = request.user
                review.display_name = request.name
                review.description = request.description
                review.rating = request.rating
                print(review)
                review.save()
                messages.success(request, "Review saved, Thank you for the feedback.")
                return redirect('products:products')                                
            else:          
                messages.error(request, 'Sorry! Only customer purchased this Item are eligible for the review')
        else: 
            pass   
    return redirect('ecommerce:products')

Попробуйте использовать генеративные ClassBasedViews. Это стоит того, чтобы изучить концепцию! Вам придется писать меньше кода, и вы сможете редактировать экземпляр модели и удалять его из фронт-энда.

Вернуться на верх