Почему я не могу сохранить содержимое моего шаблона в базе данных postgres?
В моем проекте Django есть модель для оценки арендованного автомобиля. Однако, когда я отправляю содержимое шаблона, кажется, что оно сохраняется в базе данных, но когда я проверяю в своей базе данных, таблица пуста. Я проверил весь свой код, но не могу найти ошибку. Пожалуйста, вот моя модель, представления, урлы и мой шаблон соответственно.
Модель:
class tb_CARS_COMMENTS(models.Model):
SCORE_CHOICES = zip(range(6), range(6) )
nom_client = models.CharField(max_length=250)
vehicule = models.ForeignKey(tb_CARS, on_delete=models.CASCADE, null=True)
qualite = models.PositiveSmallIntegerField(choices=SCORE_CHOICES, blank=False)
prix = models.PositiveSmallIntegerField(choices=SCORE_CHOICES, blank=False)
confort = models.PositiveSmallIntegerField(choices=SCORE_CHOICES, blank=False)
conduite = models.PositiveSmallIntegerField(choices=SCORE_CHOICES, blank=False)
email = models.EmailField(max_length=254)
site_web = models.CharField(max_length=250, null=True, blank=True)
Commentaires = models.TextField()
def __str__(self):
return 'Évaluation(Véhicule ='+ str(self.vehicule)+', Qualité ='+ str(self.qualite)\
+', Prix ='+ str(self.prix)+', Confort ='+ str(self.confort)+', Conduite ='+ str(self.conduite)+')'
class Meta:
verbose_name='COMMENTAIRE'
verbose_name_plural='COMMENTAIRES'
Мнения:
def AddComment(request):
detail=get_object_or_404(tb_CARS_CONDITIONS,id=id)
form=CARS_COMMENTForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
print('Hello chef')
obj, created = tb_CARS_COMMENTS.objects.update_or_create(
vehicule=detail.vehicule_id,
nom_client=request.GET.get('nom_client'),
qualite=request.GET.get('qualite'),
prix=request.GET.get('prix'),
confort=request.GET.get('confort'),
conduite=request.GET.get('conduite'),
email=request.GET.get('email'),
site_web=request.GET.get('site_web'),
Commentaires=request.GET.get('Commentaires')
)
else:
print('We are not reaching here')
context={
}
return render(request,'Cars/comments.html', context )
Урлы:
app_name = 'website'
urlpatterns = [
path('', views.HompePage, name='home_page'),
path('about_page/', views.AboutPage, name='about_page'),
path('contact_page/', views.ContactPage, name='contact_page'),
path('service_page/', views.ServicePage, name='service_page'),
path('liste_voiture/', views.ListeVoiture, name='liste_voirute'),
path('vehicule/<int:id>/detail/', views.DetailsVoiture, name='vehicule_detail'),
path('addComments/', views.AddComment, name='add_comments'),
]
Шаблон:
Надеюсь, вы найдете, где я допустил ошибки.
Сначала необходимо добавить идентификатор автомобиля к шаблонам URL и представлению AddComment
.
Во-вторых, я бы предложил отображать сообщения об ошибках формы, чтобы увидеть, действителен ли ввод или есть какие-то проблемы.
В-третьих, вы должны использовать create()
вместо update_or_create()
, так как вы хотите добавлять новые комментарии, если форма была отправлена, а не обновлять существующие.
app_name = 'website'
urlpatterns = [
path('', views.HompePage, name='home_page'),
path('about_page/', views.AboutPage, name='about_page'),
path('contact_page/', views.ContactPage, name='contact_page'),
path('service_page/', views.ServicePage, name='service_page'),
path('liste_voiture/', views.ListeVoiture, name='liste_voirute'),
path('vehicule/<int:id>/detail/', views.DetailsVoiture, name='vehicule_detail'),
path('vehicule/<int:car_id>/addComments/', views.AddComment, name='add_comments'),
]
def AddComment(request, car_id):
detail=get_object_or_404(tb_CARS_CONDITIONS,id=car_id)
form=CARS_COMMENTForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
print('Hello chef')
obj = tb_CARS_COMMENTS.objects.create(
vehicule=detail.vehicule_id,
nom_client=request.GET.get('nom_client'),
qualite=request.GET.get('qualite'),
prix=request.GET.get('prix'),
confort=request.GET.get('confort'),
conduite=request.GET.get('conduite'),
email=request.GET.get('email'),
site_web=request.GET.get('site_web'),
Commentaires=request.GET.get('Commentaires')
)
else:
print('We are not reaching here')
context = {'form': form}
return render(request,'Cars/comments.html', context )
<!-- Car Review Form-->
<div class="rn-review-form">
<h2 class="rn-simple-title">Rédiger un commentaire</h2>
<form action='' method="post">
{% csrf_token %}
<!-- error reporting -->
{{ form.non_field_errors }}
{% for field in form %}
{% if field.errors %}
<p class="alert alert-danger">{{ field.errors }}</p>
{% endif %}
{% endfor %}
<!-- ... rest of your form template -->
</form>
</div>
<!-- End Car Review Form-->