Django- если я создаю сообщение, это приводит к сбою моего сайта
Я создаю приложение Recipe - если пользователь сохраняет новый рецепт, я получаю ошибку:
django.urls.exceptions.NoReverseMatch: Reverse for 'recipes-detail' with arguments '('b4f97aee-4989-494e-ab9d-ce1af77a7f4d',)' not found. 1 pattern(s) tried: ['recipe/(?P<pk>[0-9]+)/\\Z']
Если я захожу в админку и удаляю рецепт - сайт снова работает.
Вот мой путь из urls.py:
path('recipe/<int:pk>/', views.RecipeDetailView.as_view(), name="recipes-detail"),
Вот соответствующие модели для формы:
class Recipe(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
serving = models.PositiveIntegerField(default=1)
temperature = models.PositiveIntegerField(default=1)
prep_time = models.PositiveIntegerField(default=1)
cook_time = models.PositiveIntegerField(default=1)
tags = models.ManyToManyField('Tag')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
id = models.CharField(max_length=100, default=uuid.uuid4, unique=True, primary_key=True, editable=False)
is_private = models.BooleanField(default=True)
def get_absolute_url(self):
return reverse('recipes-detail', kwargs={"pk": self.pk})
def __str__(self):
return str(self.title)
class Meta:
ordering = ['-created_at']
class Image(models.Model):
recipe = models.ForeignKey(
Recipe, on_delete=models.CASCADE, null=True
)
image = models.ImageField(blank=True, upload_to='images')
def __str__(self):
return self.recipe.title
class VariantIngredient(models.Model):
recipe = models.ForeignKey(
Recipe, on_delete=models.CASCADE
)
ingredient = models.CharField(max_length=100)
quantity = models.PositiveIntegerField(default=1)
unit = models.CharField(max_length=10, choices=unit_choice, default='g')
def __str__(self):
return self.recipe.title
Вот мой детальный вид из файла views.py:
class RecipeList(ListView):
model = models.Recipe
template_name = "recipes/a_recipes/home.html"
context_object_name = "recipes"
Вот часть моего шаблона, которая продолжает ошибаться:
<a href="{% url 'recipes-detail' recipe.pk %}" class="text-center bg-blue-600 text-blue-800 py-2 rounded-lg font-semibold mt-4 hover:bg-blue-300 focus:scale-95 transition-all duration-200 ease-out"> View Recipe </a>
Ранее это работало, но у меня были проблемы с извлечением деталей из Image и VariantIngredient, поэтому я добавил:
def get_named_formsets(self):
return {
'variantingredients': VariantIngredientFormSet(self.request.POST or None, instance=self.object),
'images': ImageFormSet(self.request.POST or None, instance=self.object),
}
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['form'] = kwargs.get('form', self.form_class())
context.update(self.get_named_formsets())
return context
def render_to_response(self, context, **response_kwargs):
return render(self.request, self.template_name, context, **response_kwargs)
Однако если я удалю эту секцию кода, это не исправит ошибку, поэтому я не уверен на 100% в том, что я сделал, чтобы создать эту ошибку.