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()...
答案 0 :(得分:1)
它应该是toMatchResult()
(带有两个连续的下划线)和canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
console.info(1);
return new Promise<boolean>((resove, reject) => {
this.authService.judgePass(state.url).subscribe(res => {
console.info(3);
switch (res.code) {
case -1:
break;
case 0:
resove(true);
break;
case 1:
this.showMsg(res.message);
this.router.navigate(['/manage/error']);
break;
case 2:
this.router.navigate(['/operate']);
break;
case 3:
break;
default:
break;
}
})
});
}
judgePass(route: string): Observable<CommonResult> {
const url = `${this.baseUrl}/check`;
console.info(2);
const formData = new FormData();
formData.append('url', route);
return this.httpClient.post<CommonResult>(url, formData, {});
}
,因为那是tag__tag_name
模型的字段名称:
tag_name
但是我建议将您的Tag
重命名为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__tag_name__icontains=query)|
Q(user__first_name__icontains=query)
).distinct()
,因为tag = ManyToManyField(Tag)
会导致对象的集合,因此使用笼统名称可能更好。