Как создать модель 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