Как отфильтровать конкретную категорию в Django для блога? - PullRequest
0 голосов
/ 29 мая 2020

Как отфильтровать определенную категорию в Django для блога? Я написал следующий код, вы можете в основном сосредоточиться на views.py

urls.py-

urlpatterns = [
    path('', views.homepage, name="home"),
    url(r'^News/', views.News, name="News"),
    url(r'^Android/', views.android, name="android"),
    url(r'^PC/', views.PC, name="PC"),
    url(r'^MachineLearning/', views.MachineLearning, name="Offers"),
    url(r'^Offers/', views.Offers, name="Offers"),
    url(r'^Gaming/', views.Gaming, name="Gaming"),
    url(r'^Others/', views.Others, name="Others"),
    path('create/', views.article_create, name="create"),
    url(r'^(?P<slug>[\w-]+)/$', views.article_detail, name="detail"),
    url(r'^(?P<slug>[\w-]+)/edit/', views.article_update, name="post_edit"),
    url(r'^(?P<slug>[\w-]+)/edit/post_edit', views.article_update, name="post_edit"),
    url(r'^(?P<slug>[\w-]+)/delete/', views.article_delete, name="delete_post"),
]

models.py-

class Home(models.Model):
    title = models.CharField(max_length=100)
    tag1 = models.CharField(max_length=100, default='Tech')
    tag2 = models.CharField(max_length=100, default='Android')
    tag3 = models.CharField(max_length=100, default='Best')
    tag4 = models.CharField(max_length=100, default='News')
    tag5 = models.CharField(max_length=100, default='PC')
    slug = models.SlugField(max_length=250, null=True, blank=True)
    body = models.TextField()
    CATEGORY_CHOICES = [
        ('NEWS', 'News'),
        ('ANDROID', 'Android'),
        ('PC', 'PC'),
        ('Machine Learning', 'Machine Learning'),
        ('OFFERS', 'Offers'),
        ('OTHERS', 'Others'),
        ('GAMING', 'Gaming'),
    ]
    category = models.CharField(
        max_length=20,
        choices=CATEGORY_CHOICES,
        default='OTHERS',
    )

    link = models.URLField(blank=True)
    date = models.DateTimeField(auto_now_add=True)
    pub_date = models.DateTimeField(auto_now_add=True)
    thumb = models.ImageField(default='default.png', blank=True)
    thumbnail = CloudinaryField('image')
    author = models.ForeignKey(User, default=None, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

    def snippet(self):
        return self.body[:100]+'...'

    def get_absolute_url(self):
        return '/' + self.title

views.py-

def Others(request):
    homeblog_list = Home.objects.all().order_by('-date')
    paginator = Paginator(homeblog_list, 10)
    page = request.GET.get('page')
    homeblog = paginator.get_page(page)
    return render(request, 'home/Others.html', {'articles': homeblog})

Теперь в views.py я хочу получить только категорию «Другие» в эту функцию. Как это сделать. Какой параметр передать?

1 Ответ

2 голосов
/ 29 мая 2020

Используйте filter()

Home.objects<b>.filter(category='OTHERS')</b>.order_by('-date')
...