Как создать модель django с помощью кнопки

Я довольно новый пользователь django, несколько месяцев создавал проекты и возился с ним, и я уже создавал модели, используя формы, но это мой первый раз, когда я пытаюсь создать модель, используя только кнопку, и я понятия не имею, как это сделать, я искал примеры на stackOverFlow и нашел несколько, но я не смог понять, как применить их к моему проекту

У меня есть модель продуктов, которая использует модель категорий

class Category(models.Model):

class Meta:
    verbose_name_plural = 'Categories'

name = models.CharField(max_length=254)
friendly_name = models.CharField(max_length=254, null=True, blank=True)

def __str__(self):
    return self.name

def get_friendly_name(self):
    return self.friendly_name


class Product(models.Model):
category = models.ForeignKey('Category', null=True, blank=True, on_delete=models.SET_NULL)
sku = models.CharField(max_length=254, null=True, blank=True)
name = models.CharField(max_length=254)
description = models.TextField()
has_tiers = models.BooleanField(default=False, null=True, blank=True)
price = models.DecimalField(max_digits=6, decimal_places=2)
image_url = models.URLField(max_length=1024, null=True, blank=True)
image = models.ImageField(null=True, blank=True)
favorites = models.ManyToManyField(
    User, related_name='product_favorites', blank=True)

def __str__(self):
    return self.name

и у меня есть любимая модель

class Favorite(models.Model):
"""
A Favorite model so users can save products as their favorites
"""
user = models.OneToOneField(User, on_delete=models.CASCADE)
product = models.ForeignKey(Product, null=False, blank=False, on_delete=models.CASCADE)

Я хочу, чтобы когда пользователь находится на странице products_details.html, которая является обычной страницей с отображением деталей продукта, ничего особенного, пользователь мог нажать кнопку, которая говорит "добавить в избранное", и эта кнопка перейдет к url, который перейдет к нужному представлению, я знаю, как сделать все это, но я не знаю, как создать код представления, который добавляет продукт и пользователя, который нажал кнопку, в модель Favorite, вот где я надеюсь получить некоторую помощь

Как уже упоминалось, я искал на stackOverFlow, и нашел несколько вопросов, но не смог понять, как решить мою проблему, я думаю, что нашел обходной путь, но я все еще хотел бы изучить этот способ создания моделей простым нажатием кнопки вместо заполнения формы, как я делал раньше

<

Urls.py

urlpatterns = [
    path('add_to_favorites/<int:product_id>', views.add_to_favorites, name='add_to_favorites'),
]

View.py (супер базовый)

def add_to_favorites(request, product_id):
    # Current user can *always* be grabbed in the view with `request.user` 
    #   Note: May run into issues if the user is not logged in

    Favorite.objects.get_or_create(product_id=product_id, user=request.user)

    # maybe do a redirect, or render different page

Вот базовый пример того, как можно настроить нечто подобное.

Я использовал / Link в блоке шаблона, но вы просто должны перейти на URL, который генерирует тег шаблона url.
<a class="nav-link" href="{% url 'add_to_favorites' product_id=product.pk %}">Add to Favorite</a>

<!--
    This is the URL you need: 

    {% url 'add_to_favorites' product_id=product.pk %}

    'product' being the Var you threw the Product Object in to render the Details
--->

Если вы хотите, чтобы это было беспрепятственно, было бы неплохо изучить Javascript/Jquery & AJAX, и просто POST на этот URL

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