у меня 2 проблемы;
первый; Как я могу искать по тегу имя тега?
последний; если сообщение опубликовано, показывать сообщения по имени тега.
Я беру опубликованные сообщения, используя этот код "post_list = Post.objects.published ()".
Тем не менее, я не знаю, как я могу использовать фильтр и опубликовал
Models.py
class Tag(models.Model):
tag_name = models.CharField(max_length=50, unique=True)
tag_slug = models.SlugField(max_length=50, unique=True)
class PostQuerySet(models.QuerySet):
def active(self):
return self.filter(status__in=[Post.STATUS_PUBLISHED])
def published(self):
return self.filter(status=Post.STATUS_PUBLISHED)
class Post(models.Model):
STATUS_DRAFT = 1
STATUS_PUBLISHED = 2
STATUSES = (
(STATUS_DRAFT, 'Draft'),
(STATUS_PUBLISHED, 'Published'),
)
category=models.ManyToManyField(Category)
tag=models.ManyToManyField(Tag)
user=models.ForeignKey(User,on_delete=models.CASCADE,verbose_name="Yazar",related_name='posts')
title=models.CharField(max_length=120,verbose_name="Başlık")
content=RichTextField(verbose_name="İçerik")
created_date=models.DateTimeField(auto_now_add=True,verbose_name="Oluşturulma Tarihi")
updated_date=models.DateTimeField(auto_now=True,verbose_name="Güncellenme Tarihi")
image=models.ImageField(null=True,blank=True)
slug=models.SlugField(max_length=130,unique=True)
status = models.SmallIntegerField(choices=STATUSES)
objects = PostQuerySet.as_manager()
views.py
def post_index(request):
#post_list=Post.objects.published().order_by('-created_date')
post_list=Post.objects.published()
query=request.GET.get('q')
if query:
post_list=post_list.filter(
Q(content__icontains=query)|
Q(title__icontains=query) |
Q(tag_name__icontains=query)| # doesn't work
Q(user__first_name__icontains=query)).distinct()...