Как сделать чтобы отзыв можно было оставить только один раз? django
Есть страница на которой можно оставить отзыв но сейчас это можно делать неограниченое количество раз, я хочу чтобы при написании отзыва бралось ip пользователя и потом с этого же ip было нельзя отправлять еще отзывы. Я пытался сделать отдельный класс для этого но что то не получсается.
views.py
class Reviews(CreateView):
form_class = ReviewsForm
rm = ReviewsModel.objects.all()
extra_context = {'title': 'Відгуки', 'Reviews': rm}
template_name = 'main_hd/reviews.html'
success_url = reverse_lazy('reviews')
def get_client_ip(request):
x_forward_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forward_for:
ip = x_forward_for.split(',')[0]
print(x_forward_for.split(','))
else:
ip = request.META.get('REMOTE_ADDR')
return ip
class AddReview(View):
def get(self, request):
ip_client = get_client_ip(request)
try:
ReviewsModel.objects.get(ip=ip_client)
return redirect('reviews')
except:
new_review = ReviewsModel()
new_review.ip = ip_client
new_review.save()
return redirect('reviews')
models.py (представление отзывов):
class ReviewsModel(models.Model):
name = models.CharField("Ім'я", max_length=200)
email = models.CharField("E-Mail", max_length=200)
review_text = models.CharField('Відгук', max_length=1000)
ip = models.CharField('IP-адреса', max_length=100)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Отзыв'
verbose_name_plural = 'Отзывы'
urls.py:
urlpatterns = [
path('', views.HomePage, name='home'),
path('sing_up', views.SingUp, name='singup'),
path('reviews', views.Reviews.as_view(), name='reviews'),
path('reviews/add_review/', views.AddReview.as_view(), name='add_review'),
path('ourservices', views.OurServices, name='ourservices'),
path('ourservices/<int:category_id>', views.OurServicesDetail.as_view(), name='OurServicesDetail'),
]
Буду благодарен любой помощи.