Django 寻找我可以在 object.filter 中使用的变量

Posted

技术标签:

【中文标题】Django 寻找我可以在 object.filter 中使用的变量【英文标题】:Django looking for variable i can use in object.filter 【发布时间】:2021-07-27 13:25:29 【问题描述】:

我正在使用 for 循环从数据库中获取数据,并且 html 页面将每个 db 条目显示为不同的卡片,下面有一个按钮。如果我单击该按钮,它应该向我显示一个包含更多信息的 html 页面。在那个页面上,我使用<a href="receptinfo?recepten.name" class="btn btn-info knop">Meer Info</a>,这很有效。网址显示:localhost/receptinfo?Babi%20pangang

在views.py 中尝试为objects.filter( ) 设置一个过滤器,它使用一个变量。 我试过:recepten = Recept_Info.objects.filter(name='recepten,name'),它没有显示任何错误,但也没有显示任何数据。 当我尝试:recepten = Recept_Info.objects.filter(name=recepten,name) 时,我得到 UnboundLocalError: local variable referenced before assignment error.

如果我写:recepten = Recept_Info.objects.filter(name='Babi pangang') 就可以了。

我的问题是如何使用从 recepten.name 获得的名称作为 object.filter(......)

recept.html

<div class="container">
% for recepten in recepten %
<div class='row'>
<div class="data-aos="zoom-in" data-aos-delay="200">
  <div class="card-deck">    
    <div class="card">    
      <div class="card-body">
          <h4 class="card-title">recepten.name</h4>
          <ul>
          <li><p class="card-text">Menugang: recepten.menugang</p></li>
          <li><p class="card-text">Keuken: recepten.keuken</p></li>
          <li><p class="card-text">Bereidingstijd: recepten.bereidingstijd min.</p></li>
          <li><p class="card-text">Personen: recepten.aantal_personen</p></li>
          <li><p class="card-text">Vegetarisch : recepten.Vegetarisch |yesno:"Ja,Nee" </p></li>



          
          <ul>
            
      </div>
      
      <a href="receptinfo?recepten.name" class="btn btn-info knop">Meer Info</a>
    </div>
  </div>
 % endfor % 
  </div>
</div>  
<div class="end">
</div>

Views.py

def receptinfo(request):
  
  recepten = Recept_Info.objects.filter(name='recepten,name')
  return render(request, 'receptinfo.html', 'recepten': recepten)
def __str__(self):
        return self.name

【问题讨论】:

你应该在 urls.py 中创建一个 URL 并重定向到视图。看到这个***.com/questions/12812716/… 我不确定这是否是我需要的以及如何实现。我使用 Meer Info 这样的 url 来查看它是否会出现。确实如此,所以当我按下按钮时,recepten.name 应该有一个变量,因为它确实显示在 url 中。我想从页面中获取该变量并在views.py中用作我可以在过滤器中使用的变量。 我尝试过并且没有给出错误但没有输出的是:Meer信息 并在views.py 我把request.GET.get('id') recepten = Recept_Info.objects.filter(name='id') 【参考方案1】:

好的,我想通了。

HTML 中的按钮

<a href="receptinfo?id=recepten.name" class="btn btn-info knop">Meer Info</a>

在 Views.py 中

 naam = request.GET.get('id')
  recepten = Recept_Info.objects.filter(name=naam)

【讨论】:

以上是关于Django 寻找我可以在 object.filter 中使用的变量的主要内容,如果未能解决你的问题,请参考以下文章

使用 PostgreSQL 在 Django 中寻找读写锁,例如,SELECT FOR SHARE

添加自定义 Django 管理操作

寻找“属性'_session_cache'”的Django项目

模板不存在。 Django寻找错误的路径

django收集静态寻找不存在的目录

Django:如何告诉 Django 它应该在哪里寻找应用程序?