【发布时间】:2018-12-25 23:27:08
【问题描述】:
对 django 相当陌生。
索引页的构造视图。在文档中使用“使用Q 对象的复杂查找”。
遇到以下错误
请求方法:GET 请求 URL: http://127.0.0.1:8000/music/?q=wretchedDjango 版本:1.11.12 异常类型:FieldError 异常值:
无法将关键字“album_title_icontains”解析为字段。选择 是:album_favorite、album_logo、album_title、艺术家、流派、id、歌曲、 用户,user_id
异常位置: /usr/lib64/python2.7/site-packages/django/db/models/sql/query.py 在 names_to_path,第 1352 行 Python 可执行文件:/usr/bin/python Python 版本:2.7.15
导致问题的函数视图是index()(如下所示)
def index(request):
if not request.user.is_authenticated():
return render(request, 'music/login_form.html')
else:
albums= Album.objects.filter(user=request.user)
songs=Song.objects.filter(album=albums)
num= Album.objects.filter(user=request.user).count()
req= request.GET.get("q")
if req:
albums= albums.filter(
Q(album_title_icontains=req) |
Q(artist_icontains=req)
).distinct()
songs=songs.filter(
Q(song_title_icontains=req)
).distinct()
context={
'object_list': albums,
'num': num,
'songs': songs
}
return render(request, 'music/index.html', context)
models.py文件如下所示
from __future__ import unicode_literals
from django.contrib.auth.models import Permission, User
from django.db import models
from django.core.urlresolvers import reverse
class Album(models.Model):
user= models.ForeignKey(User, default=1)
artist= models.CharField(max_length=100)
album_title= models.CharField(max_length=200)
genre= models.CharField(max_length=50)
album_logo= models.FileField()
album_favorite= models.BooleanField(default=False)
def get_absolute_url(self):
return reverse('music:detail',kwargs={'pk':self.pk})
def __str__(self):
return self.album_title+' by '+ self.artist
class Song(models.Model):
album= models.ForeignKey(Album, on_delete=models.CASCADE)
song_title= models.CharField(max_length=200)
audio_file= models.FileField(default='')
is_favorite= models.BooleanField(default=False)
def __str__(self):
return self.song_title
def get_absolute_url(self):
alb= self.album
return reverse('music:detail',kwargs={'pk':alb.pk})
我们将不胜感激。提前致谢。
【问题讨论】:
标签: python django django-models