Подскажите пожалуйста как реальзовать вишлист в 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>
Вернуться на верх