【问题标题】:Cannot Get Django to Search Database for a User Inputted Model Object Attribute无法让 Django 在数据库中搜索用户输入的模型对象属性
【发布时间】:2014-09-01 10:48:32
【问题描述】:

非常感谢任何帮助我了解如何在 django 中正确搜索模型对象属性的人。首先,我要求一个名为 userinput 的输入字符串。我正在尝试让我的 views.py 文件检查数据库后端,以查看是否有任何模型对象的 fbusername 属性与输入的用户输入匹配。如果匹配,则只需从数据库中返回该 fbusername 属性的值。如果它不匹配,则执行一些其他代码等,但我似乎无法正确执行第一步,因为即使我已经预先填充了具有相同 fbusername 属性的对象,它也总是进入else 条件。这是我的 if 语句,我将不胜感激:

...
from app.models import facebookobject
...
def view_for_all_pages(request, userinput = 'userinput'):
    if userinput == facebookobject(fbusername=userinput):
        return render (request, "app/template.html", {"userinput": facebookobject(fbusername=userinput)})
    else:
        ....
        name = fbstring['name']
        ....
        return render (request, "app/template.html", {"url_param": name})

我无法正确理解第一部分。它总是进入“其他”条件,这意味着与数据库中的每个 facebookusername 属性相比,我无法获得用户输入。我怎样才能做到这一点?提前致谢。

【问题讨论】:

  • 你的代码没有意义。大概facebookobject 是一个模型类。因此,您正在从输入中实例化一个新对象,然后检查它是否与您的输入相同?当然不是,它是您刚刚创建的对象。 究竟你想做什么?

标签: python django if-statement django-models django-views


【解决方案1】:

您根本不在这里查询数据库。仅实例化 facebookobject 不会进行查询:相反,它是创建新数据库条目的第一步。

您应该使用有据可查的查询 API:

try:
    fb = facebookobject.objects.get(fbusername=user input)
except face book object.DoesNotExist:
    # code for no match
else:
    # code for match, do something with fb

你应该学习教程,这一切都得到了彻底的解释。

【讨论】:

  • 感谢您的提示。我让它工作了。我没有看到查询 API 的教程。我不知道它存在。快速运行让我加快了速度。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2019-11-11
  • 2012-07-20
  • 1970-01-01
  • 2017-02-05
  • 2016-10-09
  • 1970-01-01
相关资源
最近更新 更多