Можно ли добавить в поле модели из фронтенда без необходимости вызывать url и шаблон?
У меня есть следующие модели рецептов:
class Recipe(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
profile = models.ForeignKey(Profile, on_delete=models.CASCADE,related_name='recipe')
title = models.CharField(max_length=255)
subtitle = models.TextField(max_length=500)
slug = models.SlugField(max_length=255)
ingredients = models.TextField(blank=True, null=True)
description = models.TextField(null=True, blank=True)
image = models.ImageField(upload_to='uploads/', blank=True,null=True)
thumbnail = models.ImageField(upload_to='uploads/', blank=True,null=True)
date_added = models.DateTimeField(auto_now_add=True)
Я создаю экземпляры этой модели через пользовательскую форму, которая включает все поля.
Я отображаю все свои модели рецептов на странице под названием my_account, выполняя следующие действия в html-странице.
{% for recipe in recipes %}
<tr>
<td><a href="{% url 'recipe_details' recipe.category.slug recipe.slug %}" class='field'>{{recipe.title}}</a></td>
<td><a href="{% url 'update_recipe' recipe.slug %}" class='button is-dark'>Update</a></td>
<td><a href="{% url 'delete_recipe' recipe.slug %}" class='button is-light'>Remove</a></td>
Мой вопрос заключается в том, могу ли я добиться следующего на странице my_accounts, когда пользователь нажимает на кнопку добавления ингредиента, то все, что пользователь ввел, добавляется в поле recipe.ingredients для этого конкретного рецепта.
Пример:
если пользователь вводит "1 ст. ложку сахара" в поле ввода и нажимает кнопку Добавить ингредиент для черного чая, то "1 ст. ложка сахара" должна быть добавлена в поля ингредиентов для моего экземпляра модели рецепта черного чая.
Хорошо, я вроде как разобрался с проблемой, не полностью, но, возможно, на 50-60%.
Во-первых, чтобы достичь желаемого результата, вам придется создать еще одно поле модели под названием "Ingredient", которое связано с моделью Recipe Model.
Coming too, Получение информации, которую пользователь ввел с фронт-энда.
страницаmy_accounts.html, вы добавите следующее.
<td>
<form action= "{% url 'add_ingredient' recipe.slug %}" method="POST">
{% csrf_token %}
<input type="text" value="Add Ingredient" name="ingredient"><button type="submit">Add Ingredient</button>
</form>
</td>
в urls.py
path('add/<slug:recipe_slug>/', views.add_ingredient, name="add_ingredient"),
в файле views.py
def add_ingredient(request, recipe_slug):
recipe = get_object_or_404(Recipe, slug=recipe_slug)
ingredient = request.POST.get('ingredient')
return redirect('my_account')