猿问

如何在views.py django中按名称获取对象

如何使用名称而不是 id 获取views.py 中的对象。


def StockSummaryPage(request, title):

    stocks_data = get_object_or_404(Stock, string=title)

    return render(request, 'stocks/stock_summary_page.html', {'stocks_data':stocks_data})

这是我的views.py 和


stock_data = get_object_or_404(股票,字符串=标题)


我们使用 pk= stock_id 但我想按标题来做。所以帮助我


holdtom
浏览 148回答 3
3回答

慕无忌1623718

您可以通过对象的任何模型字段来获取对象。title假设您的 Stock 中有一个名为的字段model,并假设您将标题传递给您的视图。stocks_data = get_object_or_404(Stock, title=title)请注意,如果您通过不唯一的字段获取对象,您将收到错误:get() returned more than one Model -- it returned 54!在这种情况下,使用get_list_or_404(Stock, title=title)它将返回 .filter() 的结果。 Django 快捷函数:get_list_or_404()

海绵宝宝撒

这里我们假设该字段为title。第一种方法:使用filter()def StockSummaryPage(request, title):    stocks_data = Stock.objects.filter(title=title)    return render(request, 'stocks/stock_summary_page.html', {'stocks_data':stocks_data})第二种方法:使用get_object_or_404def StockSummaryPage(request, title):    stocks_data = get_object_or_404(Stock, title=title)    return render(request, 'stocks/stock_summary_page.html', {'stocks_data':stocks_data})

慕哥6287543

这也可以通过另一种方式解决。我刚刚找到这个方法def StockSummaryPage(request, title):        context = {}        # add the dictionary during initialization        context["data"] = Stock.objects.get(title=title)        return render(request, "stocks/stock_summary_page.html", context)然后你可以使用 html 获取数据数据关键字喜欢data.titledata.nameETC
随时随地看视频慕课网APP

相关分类

Python
我要回答