我正在尝试创建一个搜索栏,在我的日记应用程序中搜索用户。如果用户存在,我想将搜索重定向到相应的页面。我已经为该功能创建了视图函数、模板和url。
作为测试,我从django.contrib.auth.models导入了用户类,如果用户存在,我可以显示一条个性化消息。
def search_user(request):
"""Search for users."""
if request.method == "POST":
searched = request.POST["searched"]
usernames = User.objects.filter(username__icontains=searched)
context = {"searched": searched, "usernames": usernames}
return render(request, "journals/search_user.html", context)
在主模型中,journal类与user有一个foreignkey关系,它被保存到一个名为“owner”的字段中。我想以某种方式检查搜索的用户名是否与此“所有者”字段匹配。当我尝试以这种方式进行搜索时,它找不到任何数据。我希望搜索引用“所有者”的原因是,这样我就可以访问表中的其他字段。有人能指出我在这里犯的错误吗?
from django.db import models
from django.contrib.auth.models import User
class Journal(models.Model):
"""A particular subject the user may want to write about."""
name = models.CharField(max_length=100)
date_added = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
"""Return a string representation of the model."""
return self.name
class Entry(models.Model):
"""Something specific the user may want to add to the journal."""
journal = models.ForeignKey(Journal, on_delete=models.CASCADE)
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
date_edited = models.DateTimeField(auto_now=True)
**View Function:**
def search_user(request):
"""Search for users."""
if request.method == "POST":
searched = request.POST["searched"]
usernames = Journal.objects.filter(owner=searched)
context = {"searched": searched, "usernames": usernames}
return render(request, "journals/search_user.html", context)
1条答案
按热度按时间lyr7nygr1#
searched
只是一个文本字符串,而journal.owner实际上是一个User
,所以这里没有匹配的。匹配相关的
username
相反