Я пытаюсь создать приложение для рецептов, которое позволяет пользователям загружать изображения и сохранять рецепты в списке. Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь не загружает изображение, я получаю сообщение об ошибке: attribute has no file associated with it.
Ошибка
Я посмотрел Django документация и попытка использования default
тега в моем HTML шаблоне безуспешно. Значение называется image_ingredients
в models.py
Как я могу сделать так, чтобы пользователь мог просто оставить ImageField пустым?
Вот мой код:
models.py
# Recipe Field
class Recipe(models.Model):
title = models.CharField(max_length=200)
# TODO: Add default image if image is left blank
image = models.ImageField(upload_to='recipes/images/', blank=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE,)
daily_meals = ['Breakfast', 'Brunch', 'Elevenses', 'Lunch', 'Tea', 'Supper', 'Dinner']
meal = models.ForeignKey(Meal, limit_choices_to={'name__in': daily_meals}, on_delete=models.CASCADE,)
image_ingredients = models.ImageField(upload_to='recipes/images/', null=True, blank=True)
ingredients = models.TextField(blank=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
views.py
# Solo recipe with instructions
def solo(request, recipe_id):
recipe = get_object_or_404(Recipe, pk=recipe_id)
return render(request, 'recipes/solo.html', {'recipe':recipe})
соло. html
<h4>Ingredients</h4>
<img src="{{ recipe.image_ingredients.url }}">
<p>{{ recipe.ingredients }}</p>