Можно ли добавить в поле модели из фронтенда без необходимости вызывать 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 ст. ложка сахара" должна быть добавлена в поля ингредиентов для моего экземпляра модели рецепта черного чая. enter image description here

Хорошо, я вроде как разобрался с проблемой, не полностью, но, возможно, на 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')
Вернуться на верх