Я новичок в Django Python Framework.у меня есть модель Темы, модель SubChannel, модель SubChannelSubscription.
Я хочу отображать Темы в соответствии с тем, на что подписан пользователь.Например, если пользователь подписался только на категорию «Физика», он должен видеть только разделы «Физика»
Python 3 и Django 2
class SubChannelSubscription(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='subscriptions',
verbose_name='Subscriber', default=True)
category = models.ForeignKey(SubChannel, related_name='Topic+', on_delete=models.CASCADE,
verbose_name='SubChannel', default=True)
def __str__(self):
return '%(user)s\'s subscription to "%(category)s"' % {'user': self.user, 'category': self.category}
class Meta(object):
verbose_name = 'Subscription to SubChannel'
verbose_name_plural = 'Subscriptions to SubChannel'
class Topic(models.Model):
by = models.ForeignKey(User, on_delete=models.CASCADE, default=True)
subject = models.CharField(max_length=150, unique=True, null=True)
date_created = models.DateTimeField(auto_now_add=True)
category = models.ForeignKey(SubChannel, on_delete=models.CASCADE, null=True, default=True, related_name='topics')
file = RichTextUploadingField(blank=True, null=True)
def __str__(self):
return self.subject
def get_absolute_url(self):
return reverse('Topic_detail', kwargs={'pk': self.pk})
У меня отображается код Views.py для подписки пользователяниже
class SubChannelSubscriptionView(ListView):
template_name = 'subscription.html'
model = Topic
def get_queryset(self):
self.user = get_object_or_404(User, pk=self.kwargs['pk'])
return SubChannelSubscription.objects.filter(user=self.user)
def get_context_data(self, **kwargs):
context = super(SubChannelSubscriptionView, self).get_context_data(**kwargs)
context['topics'] = self.user
context['top'] = Topic.objects.filter(category=1)
return context
мой urls.py
path('subscription/<int:pk>', SubChannelSubscriptionView.as_view(), name='subscription'),