簡體   English   中英

我正在嘗試保存表單數據。 我的Django表格數據沒有保存,為什么?

[英]I am trying to save the form data. My Django form data is not saved, why?

我正在嘗試將表單數據從 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>

我的 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 學習這個概念是值得的。 您將不得不編寫更少的代碼,並且能夠從前端編輯 model 實例並將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM