OReverseMatch at /reviews/ Reverse for 'reviews_detail' with arguments

У вас есть серьезные проблемы со следующим.

В моем проекте есть приложение отзывов, где люди могут читать, оставлять, редактировать и удалять отзывы. Все работало нормально в gitpod на локальной стороне, но затем, когда я переместил приложение на Heroku, я начал получать ошибки. На Heroku я получал ошибку null constraint, а на локальной стороне я получал ошибку "null value in column". Я очистил базу данных, удалил пользователей и создал нового суперпользователя после обновления моделей для использования uuid. Теперь я получаю обратную ошибку на локальной стороне (одному богу известно, что произойдет, когда я переведу ее на Heroku, но давайте разберемся с одной вещью за раз).

В любом случае, я прикреплю весь соответствующий код ниже. У меня завтра должен быть проект, так что любая помощь будет очень признательна.

reviews.html

{% extends "base.html" %}
{% load static %}

{% block content %}
<div class="container-fluid text-white">
    <div class="row mt-5">
        {% for review in object_list %}
        <div class="col col-md-3 reviews">
            <h1 class="pt-3">Title: {{ review.title }}</h1>
            {% if request.user.is_authenticated %}
            {% if user.id == review.user.id %}
            <a href="{% url 'update_review' review.pk %}">Edit</a>
            <a href="{% url 'delete_review' review.pk %}">Delete</a><br>
            {% endif %}
            {% endif %}
            <a href="{% url 'reviews_detail' review.pk %}">{{ review.review|slice:":50" }}</a><br>
            {{ review.user }}<br>
            {{ review.rate }} Stars<br>
            {{ review.created_at }}

        </div>
        {% endfor %}
    </div>
    <div class="row">
        <div class="col">
            <a href="{% url 'add_review' %}">
                <h1 class="headings">Leave a Review</h1>
            </a>
        </div>
    </div>
</div>
{% endblock %}

models.py

import uuid

from django.db import models
from django.contrib.auth.models import User


RATINGS = (
    (1, '1'),
    (2, '2'),
    (3, '3'),
    (4, '4'),
    (5, '5'),
)


class UserReviews(models.Model):
    """ model for user reviews used to create and view reviews """
    title = models.CharField(max_length=50, blank=True)
    review = models.TextField(max_length=1000)
    user = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    rate = models.IntegerField(choices=RATINGS, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)

urls.py

from django.urls import path
from .views import ReviewListView, ReviewDetailView, ReviewFormView, UpdateReviewView, DeleteReviewView

urlpatterns = [
    path('add_review/', ReviewFormView.as_view(), name='add_review'),
    path('', ReviewListView.as_view(), name='reviews'),
    path('reviews/<int:pk>', ReviewDetailView.as_view(),
         name='reviews_detail'),
    path('review/update/<int:pk>', UpdateReviewView.as_view(), name='update_review'),
    path('review/<int:pk>/delete/', DeleteReviewView.as_view(), name='delete_review'),
]

views.py

""" imports from django, models.py and forms.py """
from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy
from .models import UserReviews
from .forms import UserReviewForm


class ReviewListView(ListView):
    """ view for generating the review list """
    model = UserReviews
    template_name = "reviews/reviews.html"
    ordering = ['-created_at']


class ReviewDetailView(DetailView):
    """ view for generation Review Details """
    model = UserReviews
    template_name = "reviews/reviews_detail.html"


class ReviewFormView(CreateView):
    """ view for review form """
    model = UserReviews
    template_name = "reviews/add_review.html"
    form_class = UserReviewForm
    success_url = reverse_lazy('reviews')


class UpdateReviewView(UpdateView):
    """ view for updating review form """
    model = UserReviews
    template_name = "reviews/update_review.html"
    form_class = UserReviewForm


class DeleteReviewView(DeleteView):
    """ view for deleting review form """
    model = UserReviews
    template_name = "reviews/delete_review.html"
    success_url = reverse_lazy('reviews')

forms.py

from django import forms
from .models import UserReviews


class UserReviewForm(forms.ModelForm):
    """ meta data to generate contact us form """
    class Meta:
        """ form model, fields and widgets used"""
        model = UserReviews
        fields = [
            'title', 'review', 'rate'
            ]

    def form_valid(self, form):
        # if form is valid return to discussion
        form.instance.user = self.request.user
        return super().form_valid(form)

error

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