【发布时间】:2021-02-06 23:06:36
【问题描述】:
我正在尝试创建一个可以获取艺术家姓名和歌曲名称的搜索字段,但我收到错误消息“无法将关键字 'get_full_album_detail' 解析到字段中。”一旦我尝试从“get_album_detail”查询。
class Artist(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
username = models.CharField(max_length=50, null=True, unique=True)
class Album(models.Model):
artist = models.ForeignKey(Artist, on_delete=models.CASCADE)
name = models.CharField(max_length=120)
@property
def get_album_detail(self):
return str(self.artist.username) + " - " + str(self.name)
### CUSTOM MODEL MANAGER
class SongQuerySet(models.QuerySet):
def search(self, query = None):
qs = self
if query is not None:
or_lookup = (Q(get_album_detail__icontains=query)|
Q(slug__icontains=query)
#Q(artist__user__icontains=query)
)
qs = qs.filter(or_lookup).distinct()
return qs
## SEARCH VIEW
class AlbumSearch(ListView):
template_name = 'search/song_search.html'
paginate_by = 15
def get_queryset(self):
request = self.request
query = request.GET.get('q', None)
if query is not None:
song_result = Song.objects.search(query=query)
return song_result
【问题讨论】:
-
get_album_detail不是一个字段。它不存储在数据库中,因此您无法对此进行查询。
标签: django django-models django-views django-orm django-managers