Для отображения списка избранных topic в Django, вам потребуется две модели - одна для представления пользователей и другая для представления topic. В модели User, вы можете добавить поле ManyToManyField для связи с моделью Topic, чтобы хранить список избранных topic для каждого пользователя.
Ниже приведен пример кода:
from django.db import models from django.contrib.auth.models import User class Topic(models.Model): title = models.CharField(max_length=100) # Другие поля для представления topic class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) favorite_topics = models.ManyToManyField(Topic)
Добавление topic в список избранных для определенного пользователя может быть выполнено с помощью метода add модели ManyToManyField. Например:
def add_favorite_topic(request, topic_id): topic = Topic.objects.get(id=topic_id) user_profile = UserProfile.objects.get(user=request.user) user_profile.favorite_topics.add(topic)
Теперь, чтобы отобразить список всех избранных topic для пользователя, вы можете получить объект UserProfile для текущего пользователя и обращаться к полю favorite_topics. Например:
def favorite_topics_list(request): user_profile = UserProfile.objects.get(user=request.user) favorite_topics = user_profile.favorite_topics.all() return render(request, 'favorite_topics.html', {'favorite_topics': favorite_topics})
В соответствующем шаблоне (favorite_topics.html
) вы можете использовать цикл для отображения каждого избранного topic:
<ul> {% for topic in favorite_topics %} <li>{{ topic.title }}</li> <!-- Например, отображение заголовка topic --> {% endfor %} </ul>
Чтобы удалить topic из списка избранных, вы можете использовать метод remove модели ManyToManyField. Например:
def remove_favorite_topic(request, topic_id): topic = Topic.objects.get(id=topic_id) user_profile = UserProfile.objects.get(user=request.user) user_profile.favorite_topics.remove(topic)
Надеюсь, это помогло вам понять, как отобразить список избранных topic и как их удалить в Django.