【问题标题】:Display Item requested by user in template (django)在模板中显示用户请求的项目(django)
【发布时间】:2021-08-17 17:28:13
【问题描述】:

我有一个简单的借阅项目请求应用程序,用户将登录并填写以下表格:

  • 项目
  • 位置
  • 开始日期
  • 结束日期

这存储在数据库Record stored in database

然后我有一个退货页面,用户只需点击退货即可确认已退货。

我想只显示与用户登录页面相关的项目,(所以只是用户提出的请求:当前项目和以前的项目。)

我的请求表有以下模型:

class Request(models.Model):
       shootkit_id = models.ForeignKey(Shootkit, on_delete=models.CASCADE)
       username = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
       request_start_date = models.DateField('Start Date')
       request_end_date = models.DateField('End Date')
       location = models.ForeignKey(Location, on_delete=models.CASCADE)
  

视图中的以下定义:

def return_form(request):
    form = shootkitForm
    request_db = Request.objects.all
    return render(request, 'return_form.html', {'form':form, 'request_db':request_db})

模板返回如下:

{% for shootkit in request_db %}
        <div class="callout-info">Hi {{ user }}, you currently have the {{ shootkit.shootkit_id }}</div>
        {% endfor %}

显然,这是显示表中的每条记录(如果我有更多记录)。我只想显示与用户 User log in info and name of the item 链接的项目(在本例中为 shotkit #5)

这是我的第一次开发,也是第一次使用 django……所以这是我能想到的唯一方法来显示记录……但我不知道如何将它与用户和仅显示用户(登录)出现的记录。有人可以帮忙吗?

谢谢。

【问题讨论】:

    标签: django django-models django-templates django-users django-database


    【解决方案1】:

    你必须使用filter():

    def return_form(request):
        form = shootkitForm
        request_db = Request.objects.filter(username=request.user)
        return render(request, 'return_form.html', {'form':form, 'request_db':request_db})
    

    【讨论】:

    • @E Paul,感谢您的帮助。这是完全有道理的,虽然我应用了这个过滤器并且我得到了以下错误:in check_query_object_type raise ValueError(ValueError: Cannot query "oscar-nl": Must be "User" instance.
    • 然后这样做: request_db = Request.objects.filter(username=User.objects.get(username=request.user)) 。另外,您登录了吗?
    • @E 保罗,耶!!那行得通!是的,我已登录,我尝试过使用不同的用户,并且只显示这些用户请求的项目!你是明星,我的朋友!非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2010-10-16
    • 2021-07-05
    • 1970-01-01
    相关资源
    最近更新 更多