Подскажите пожалуйста как реальзовать вишлист в django
Реализую в качестве дипломного проекта вишлист на джанго. Столкнулась в непониманием как прописать логику во views.py, регистрацию пользователя реализовала через приложение пользователя.
Помогите пожалуйста разобраться.
в models.py прописала два класса:
from users.models import CustomUser
class Item(models.Model):
"""Модель подарка для вишлиста"""
title = models.CharField(max_length=200, unique=True,
help_text='Название желанного подарка')
price = models.DecimalField(max_digits=12, decimal_places=2,
help_text='Цена')
url = models.URLField(max_length=400, blank=True, verbose_name='URL',
help_text='Ссылка на подарок', null=True)
notes = models.TextField(blank=True, help_text='Любые дополнительные примечания к товару')
class Wishlist(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, related_name='wishlists')
items = models.ManyToManyField(Item, related_name='wishlists')
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Wishlist of {self.user.username}"
не очень понятно логику чего вам надо прописать, если вы хотите иметь представления основанные на моделях, то вы можете использовать соответствующие классы предоставленные самим фреймворком:
ListView - подойдет для вывода списка Item
DetailView - подойдет для вывода информации одного Item
Документация по применению данных классов:
https://docs.djangoproject.com/en/5.1/topics/class-based-views/generic-display/
Совет: если не собираетесь использовать самую новую версию django, смотрите документацию только на версию которую используете.
Пример если вам нужна страница для вывода информации Item:
views.py
from django.views.generic import DetailView
from .models import Item
class ItemDetailView(DetailView):
model = Item
urls.py
from django.urls import path
from .views import ItemDetailView
urlpatterns = [
path("item/<int:pk>", ItemDetailView.as_view()),
]
В шаблоне вы сможете использовать переменную object, которая даёт доступ к вашему item: item_detail.html
<div>
<h1>{{object.title}}</h1>
<p>{{object.notes}}</p>
</div>