【发布时间】:2021-07-07 14:40:00
【问题描述】:
我有两个Django 模型:
class User(models.Model):
first_name = ...
last_name = ...
class Book(models.Model):
authors = models.ManyToManyField(User)
现在我想通过 author 的全名 (first_name + last_name) 添加过滤 Books。我添加了FilterSet,其逻辑如下:
qs_prefetched = queryset.prefetch_related(
Prefetch("authors", User.objects.annotate(full_name=Concat('first_name', Value(' '), 'last_name')))
).all().filter(authors__full_name__icontains=value)
当我尝试以这种方式过滤时,出现以下错误:
django.core.exceptions.FieldError: Related Field got invalid lookup: full_name
但字段 full_name 在 authors 值中:
(Pdb) qs_prefetched[1].authors.all()[0].full_name
'Ke Xu'
谁能告诉我我错过了什么? 提前致谢。
【问题讨论】:
标签: django django-orm